![每 2 分钟重启一次服务](https://linux22.com/image/1056946/%E6%AF%8F%202%20%E5%88%86%E9%92%9F%E9%87%8D%E5%90%AF%E4%B8%80%E6%AC%A1%E6%9C%8D%E5%8A%A1.png)
我已经在以下位置安装了自己的服务:
/etc/systemd/system/MyService.service
采用以下设置:
[Unit]
Description=This is My Awesome service
After=network.target
[Service]
Type=forking
ExecStart=/home/me/myProgram
Restart=always
[Install]
WantedBy=multi-user.target
我也让它在启动时启动:
sudo systemctl enable MyService.service
但出于某种原因,服务经常重启,比如每 2 分钟重启一次
我做错了什么?如何修复它,以便仅在服务真正关闭时才重新启动?
编辑 :
我看到它无缘无故重新启动:
me@myUbuntu:~ $ systemctl status MyService.service
● MyService.service - This is My Awesome service
Loaded: loaded (/etc/systemd/system/MyService.service; enabled)
Active: activating (start) since Wed 2016-08-17 08:30:27 UTC; 1min 28s ago
Control: 2550 (MyService)
CGroup: /system.slice/MyService.service
└─2550 /home/me/myProgram
me@myUbuntu:~ $ systemctl status MyService.service
● MyService.service - This is My Awesome service
Loaded: loaded (/etc/systemd/system/MyService.service; enabled)
Active: activating (start) since Wed 2016-08-17 08:31:57 UTC; 13ms ago
Control: 2575 (MyService)
CGroup: /system.slice/MyService.service
└─2575 /home/me/myProgram
答案1
如果您的程序存在,参数“Restart=always”将重新启动该程序。请参见此处:https://wiki.archlinux.org/index.php/systemd了解更多详情。同样重要的是:
type=forking:一旦进程分叉并且父进程退出,systemd 就会认为服务已启动。对于经典守护进程,请使用此类型,除非您知道没有必要。您还应该指定 PIDFile=,以便 systemd 可以跟踪主进程。
因此,如果 systemd 需要跟踪进程,则需要创建一个 pid 文件。