linux 程序如何检测它是否作为systemd守护进程运行?

xvw2m8pv  于 2022-11-28  发布在  Linux
关注(0)|答案(3)|浏览(350)

有没有办法在程序中检测到它是由systemd作为守护程序运行的?
systemd应用程序接口

sd_booted()

用于检测整个系统是否由systemd引导,但不涉及程序本身。
谢谢

gr8qqesn

gr8qqesn1#

获取父进程ID并查看该进程是否为systemd

6yoyoihd

6yoyoihd2#

您可以在守护进程的服务文件中设置一个magic环境变量并查找该变量。

n3schb8v

n3schb8v3#

从systemd v232开始,一个环境变量INVOCATION_ID被赋予所有作为服务单元(的一部分)启动的进程。这是systemd的一个很好的特性,而不是任何其他服务管理器,所以它可以作为一种方便的方式来检测systemd,但不一定可靠。
就我个人而言,我用它来禁用日志中的时间戳,因为systemd journal已经这样做了。

相关问题