systemd实践: 依据情况自动重启服务(2)

配置RestartPreventExitStatus=后,并没有完全忽略Restart=,而是指当退出情况与RestartPreventExitStatus=匹配的时候,才忽略Restart=,若没有匹配,根据Restart=该怎么样还怎么样(具体详见后面的扩展部分)

6.2.kill子进程会是什么情况

若systemd启动的不是一个简单进程,而是会派生子进程的情况(比如执行shell脚本,shell脚本里启动多个程序),那么当另外开一个窗口通过kill -信号测试时,会是什么情况呢,先贴出测试方法

ExecStart=/root/mem改为ExecStart=/root/mytest.sh

/root/mytest.sh内容为

#!/bin/bash sleep 100000 & sleep 200000

测试结果

若kill 主进程PID(kill不带参数),则主进程状态为code=killed, signal=TERM

若kill -9 主进程PID,则主进程状态为code=killed, signal=KILL

若kill 最后一个子进程PID(kill不带参数),则systemd不认为是接收到信号,而是根据最后一个进程的exit code进行处理,此时主进程状态为code=exited, status=143

若kill -9 最后一个子进程PID,此时主进程状态为code=exited, status=137

7.扩展

上面有提到RestartPreventExitStatus和Restart的关系,但没有数据说明

另外,kill和kill -9的区别,也需要有一份数据说明

因此做了一个详细对比,这里附上详细数据

systemd实践: 依据情况自动重启服务

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11652.html