在程序中是否有办法检测它正在作为systemd守护进程运行?
systemd API
sd_booted()
此命令用于检测整个系统是否由systemd引导启动,但并不涉及程序本身。
谢谢
获取父进程 ID 并查看该进程是否为 systemd
。
INVOCATION_ID
。这是systemd独有的好特性,所以它可以作为检测systemd的方便方法,但不一定可靠。echo $INVOCATION_ID
,并且看到了一个调用ID。看起来systemd已经在我的系统上启动了我的用户会话,所以这可能不一定有效。 - flaviut
ppid
(父进程ID)也许可以? - Mark Setchell--started-from-systemd
,则假设它已由systemd
启动,并配置您的systemd以传递该参数)。 - Basile Starynkevitch/proc/<pid>/cgroup
的systemd
条目似乎对由 systemd 运行的服务有所不同(我在我的树莓派上快速查看了一下)。 - code_onkel