如何教 systemd 检测服务进程是否已在运行?

use*_*554 0 systemd

有一个守护进程可以从命令行和 systemctl 启动。

/etc/systemd/system/mydaemon.service 包含 ExecStart= 和 PIDFile= 所以 Systemd 可以肯定地检测到该服务是否正在运行:

[Unit]
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon --no-fork
PIDFile=/var/run/mydaemon-%i.pid

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

为什么“systemctl status mydaemon”说守护程序即使正在运行也已停止?

如何教 systemd 守护进程不仅可以通过“systemctl start”运行,还可以直接运行?

841*_*104 5

不要这样做。始终以systemctl. 关闭服务并以systemd已知的方式启动它。

这可能不是您想要的答案。甚至有可能按照你的要求去做,但为什么要麻烦呢?