运用场景
在linux deploy服务时,为了保证服务crash以后能够自动重启,经常需要制作守护进程的脚本。
1. 记录进程的PID
为了得到准确的进程PID,我们经常在启动脚本中输出一个xxx.pid文件,其中记录了需要守护的进程的PID
我们可以利用bash变量!\$ 获取Shell最后运行的后台Process的PID
Example:
1 |
|
这样我们便得到了 myapp.jar的进程PID,并写入了 ./pid.file文件中
2. 监测进程是否在运行
利用 kill -0 检测进程是否存在
kill -0 \$pid中的-0表示不发送任何信号给PID对应的进程,但是仍会对变量值PID对应的进程是否存在进行检查,如果\$pid对应的进程存在,则返回0,不存在返回1。
1 | PID=$(cat ./pid.file) > /dev/null 2>&1 |
3. 完整脚本
start.sh
1 |
|
watch.sh
1 |
|
注意 stop脚本里要kill掉watch.sh ,不然会重复启动。