如何教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 

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

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

不要这样做。 始终用systemctl启动它。 closures服务并以systemd知道的方式启动服务。

这可能不是你想要的答案。 甚至有可能做你在问什么,但为什么要麻烦?

那么,我检查了systemd手册,并没有发现任何信息如何通知systemd手动启动的过程。 我看起来并不深刻,但我认为有可能通过发送消息给systemd处理启动过程,但这对我来说很复杂。