有没有办法在程序中检测到它是由systemd作为守护程序运行的?systemd应用程序接口
sd_booted()
用于检测整个系统是否由systemd引导,但不涉及程序本身。谢谢
gr8qqesn1#
获取父进程ID并查看该进程是否为systemd。
systemd
6yoyoihd2#
您可以在守护进程的服务文件中设置一个magic环境变量并查找该变量。
n3schb8v3#
从systemd v232开始,一个环境变量INVOCATION_ID被赋予所有作为服务单元(的一部分)启动的进程。这是systemd的一个很好的特性,而不是任何其他服务管理器,所以它可以作为一种方便的方式来检测systemd,但不一定可靠。就我个人而言,我用它来禁用日志中的时间戳,因为systemd journal已经这样做了。
INVOCATION_ID
3条答案
按热度按时间gr8qqesn1#
获取父进程ID并查看该进程是否为
systemd
。6yoyoihd2#
您可以在守护进程的服务文件中设置一个magic环境变量并查找该变量。
n3schb8v3#
从systemd v232开始,一个环境变量
INVOCATION_ID
被赋予所有作为服务单元(的一部分)启动的进程。这是systemd的一个很好的特性,而不是任何其他服务管理器,所以它可以作为一种方便的方式来检测systemd,但不一定可靠。就我个人而言,我用它来禁用日志中的时间戳,因为systemd journal已经这样做了。