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仓库失败解决办法
