最初发布在StackOverflow上,告诉来这里询问。回顾一下对话-
我最初的SO问题如下:
假设我的systemd
单位文件中包含以下内容:
Type=forking
Restart=on-failure
父进程退出,状态为0(子进程已成功启动)。在以后的某个时间,孩子死于非零状态。发生什么了?systemd
可以跟踪子守护进程的PID:
Process: 1768 ExecStart=/bin/mydaemon (code=exited, status=0/SUCCESS)
Main PID: 1770 (mydaemon)
是Restart=on-failure
只盯着父退出状态,或者还有孩子呢?
我创建了以下单位文件:
[Unit]
Description=Something
[Service]
Type=forking
WorkingDirectory=/tmp
ExecStart=/tmp/script.sh
ExecStop=/tmp/script.sh
Restart=on-failure
script.sh包含以下内容:
#!/bin/sh
echo "Forking"
/tmp/myscript.sh &
myscript.sh包含以下内容:
#!/bin/sh
sleep 60
exit 1
果然,每隔60秒,systemd将重新启动服务。
如此处所示,请注意不同的PID和开始时间,请注意它将重新启动父级:
linux:~ # systemctl status myService.service
● myService.service - Something
Loaded: loaded (/etc/systemd/system/myService.service; static; vendor preset: disabled)
Active: active (running) since Mon 2017-07-10 20:43:29 CEST; 57s ago
Process: 4393 ExecStart=/tmp/script.sh (code=exited, status=0/SUCCESS)
Main PID: 4396 (script.sh)
Tasks: 2 (limit: 512)
CGroup: /system.slice/myService.service
├─4396 /bin/sh /tmp/script.sh
└─4397 sleep 60
Jul 10 20:43:29 linux.suse systemd[1]: Starting Something...
Jul 10 20:43:29 linux.suse script.sh[4393]: Forking
Jul 10 20:43:29 linux.suse systemd[1]: Started Something.
linux:~ # systemctl status myService.service
● myService.service - Something
Loaded: loaded (/etc/systemd/system/myService.service; static; vendor preset: disabled)
Active: active (running) since Mon 2017-07-10 20:44:29 CEST; 1s ago
Process: 4409 ExecStop=/tmp/script.sh (code=exited, status=0/SUCCESS)
Process: 4417 ExecStart=/tmp/script.sh (code=exited, status=0/SUCCESS)
Main PID: 4420 (script.sh)
Tasks: 2 (limit: 512)
CGroup: /system.slice/myService.service
├─4420 /bin/sh /tmp/script.sh
└─4421 sleep 60
Jul 10 20:44:29 linux.suse systemd[1]: Starting Something...
Jul 10 20:44:29 linux.suse script.sh[4417]: Forking
Jul 10 20:44:29 linux.suse systemd[1]: Started Something.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句