我在 path 有一个 systemd-machined 插件/etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf
。当我跑步时,systemctl status systemd-machined
我确实看到了线条
Drop-In: /etc/systemd/system/systemd-machined.service.d
└─10-machined-pid-file.conf
但是,我在 /var/run/ 中没有看到 PID 文件。根据我的加入:
[Serivce]
PIDFile=/var/run/machined.pid
我相信创建该 PID 文件应该没有任何问题。有什么我想念的吗?
该
PIDFile=
设置不会创建PID 文件。这仍然取决于服务本身,就像过去 40 年一样。相反,此选项告诉 systemd 在哪里可以找到现有的 PID 文件(如果有)。在大多数情况下,它根本不需要,因为 systemd 会将服务保存在自己的 cgroup 中,并且不需要 PID 文件来跟踪它们。但是,如果服务自身清理失败,systemd 会在服务退出时删除一个 PID 文件。从文档中:
PIDFile=
遗憾的是,即使您在服务的单元文件中指定了一行,systemd 也不会为非分叉服务创建 PID文件。但是你也许可以用一条ExecStartPost=
线作弊,例如:如果您想使用主进程的 PID,我认为“grep'ing” pid 文件是错误的方法
systemctl show -p MainPID --value SERVICE
(其中服务是单位名称)
示例用法:
ExecStartPost=/usr/bin/bash -c '/usr/bin/systemctl show -p MainPID --value unbound > /run/unbound.pid'