zoukankan      html  css  js  c++  java
  • 【运维技术】shell脚本实现线程挂掉,自动重启功能

    由于分布式系统的流行,服务器上面部署的项目都是多实例的。而我又希望有一个功能,当服务器出现异常情况能够自动重启实例。

    所以我想到了使用shell脚本监控实例进程id,如果不存在的话,就重启对应的实例。

    一、轮询监控实现:

    1. 使用crontab,缺点一分钟轮询一次

    2. 使用shell死循环进行轮询

    参考:https://blog.csdn.net/u011261430/article/details/72921991

    由于我们系统使用人数比较少,所以我选择crontab进行轮询

    二、环境变量问题:

    crontab中的环境变量默认不会将我们自行定义的环境变量载入进来,所以执行脚本的时候,需要执行source命令

    source /etc/profile

    三、日志输出

    对于轮询失败的次数和时间需要进行统计,保证能够查询到,所以我们要将日志重定向到一个固定的目录,定时清理

    */1 * * * * /app/crontab/monitor.sh >> /app/crontab/kafka.log

    四、代码实例:

    crontab -e:将对应日志写入到文件中,方便后期查询失败的情况

    */1 * * * * /app/crontab/monitor.sh >> /app/crontab/kafka.log

    文件目录结构:

    ├── app
    │   ├── crontab
    │        ├── kafka.log
    │        ├── monitor.sh

    monitor.sh

    记得必须先赋权

    chmod 777 monitor.sh

    具体代码

    #!/bin/sh
    # 默认shell执行需要的内容

    # 环境变量重新生效 source
    /etc/profile

    # 判断进程是否存在,记得使用grep -v 排除gerp进程 retDesc
    =`ps -ef | grep "kafka.Kafka /app/kafka/config/server.properties" | grep -v grep` retCode=$? # 判断是否不为0,不为0就重新启动服务器,为0就说明服务器存在
    if [ ${retCode} -ne 0 ]; then # invoke aliyun mobile push sms echo $(date +%F%n%T) echo "server down restart..." /app/kafka/bin/kafka-server-start.sh -daemon /app/kafka/config/server.properties >> /dev/null 2>&1 else echo "server on" fi

    五、其他

    linux中如果需要显示树形目录结构,安装tree库即可

    cron日志:tailf /var/log/cron

    linux中的标准输入和输出,也就是控制台的输入和输出:https://blog.csdn.net/cjfeii/article/details/10084343

    linux中有一个输入时空设备/dev/null 输出到这边的东西是不会占用内存的 > 新文件 >> 附加 2>&1 程序输出和错误输出都走这个输出

    赋权命令:chmod 777 *.sh

    linux快熟清空文件的三种方法:

    echo "" > test.txt(文件大小被截为1字节)
    > test.txt(文件大小被截为0字节)
    cat/dev/null > test.txt(文件大小被截为0字节)

    路径问题:最好脚本中都使用全路径,避免路径引发的问题。

  • 相关阅读:
    EntityFrameworkCore 试用
    学习Core 本机开发调试 (环境)
    非代码的异常
    .net 下判断中英文字符串长度
    LingQ 的Distinct使用方法
    Excel导入导出各种方式分析
    VS使用的快捷方式
    数据库事物
    web开发常用正则表达式
    特殊字符转义
  • 原文地址:https://www.cnblogs.com/fly-piglet/p/9825049.html
Copyright © 2011-2022 走看看