Linux脚本实现进程监控与重启
Linux脚本实现进程监控与重启
2018年1月14日 大门牙@深圳
总结一下在Device Router服务器开发中使用脚本实现进程监控与自动重启的方法
1. 监控进程的脚本monitor.sh
#!/bin/sh device_router_cmd_line=./device_router localhost 1883 mosquitto_cmd_line=./mosquitto -d date while true;do is_device_router_exist=$(ps aux | grep device_router | grep -v grep | wc -l) is_mosquitto_exist=$(ps aux | grep mosquitto | grep -v grep | wc -l) if [ $is_mosquitto_exist = 0 -a $is_device_router_exist = 0 ];then date echo Process mosquitto and device_router are down echo Bring mosquitto up $mosquitto_cmd_line sleep 2 echo Bring device_router up $device_router_cmd_line else if [ $is_mosquitto_exist = 0 ];then date echo Process mosquitto is down echo Bring mosquitto up $mosquitto_cmd_line fi if [ $is_device_router_exist = 0 ];then date echo Process device_router down echo Bring device_router up $device_router_cmd_line fi fi sleep 10 done
其中,wc -l显示输入的行数,即找到的进程个数
2. 后台启动monitor.sh并使其daemon化的脚本
#!/bin/sh mkdir -p logs nohup ./monitor.sh > logs/monitor.log 2>&1 &
nohup 使得monitor.sh以后台方式执行,并且不受当前shell关闭的影响
3. 关闭进程的脚本
#!/bin/sh is_device_router_exist=$(ps aux | grep device_router | grep -v grep | wc -l) is_mosquitto_exist=$(ps aux | grep mosquitto | grep -v grep | wc -l) is_monitor_exist=$(ps aux | grep monitor.sh | grep -v grep | wc -l) if [ $is_monitor_exist = 1 ];then echo Kill monitor pgrep monitor.sh | xargs kill -9 fi if [ $is_mosquitto_exist = 1 ];then echo Kill mosquitto pgrep mosquitto | xargs kill -9 fi if [ $is_device_router_exist = 1 ];then echo Kill device_router pgrep device_router | xargs kill -9 fi
热烈欢迎批评指正!!!
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
连接git仓库失败解决办法