我要问的是两种情况:技术上和风格上。
我的应用程序/守护进程可以在其中保存pidfile /opt/my_app/run/吗?
/opt/my_app/run/
这样做很不好吗?
我的需要是:我的守护程序在特定用户下运行,实现者必须在/var/run,chown和chgrp中的mkdir新目录中运行我的守护程序。似乎仅将pidfile保留在本地(对于守护程序)似乎更容易。
/var/run
我不会将pidfile放在诸如的应用程序安装目录下/opt/my_app/whatever。该目录可以是只读的,可以在机器之间共享,可以由守护程序监视,该守护程序会将任何更改视为可能的闯入尝试。
/opt/my_app/whatever
pidfiles的正常位置是/var/run。大多数unices会在启动时清理此目录;在Ubuntu下,这是通过/var/run内存文件系统(tmpfs)实现的。
如果您从以root用户身份运行的脚本启动守护程序,请让它创建一个子目录,/var/run/gmooredaemon并将其锁定给运行守护程序的用户,然后再su转到该用户并启动该守护程序。
/var/run/gmooredaemon
su
在许多现代Linux系统上,如果您从不是以root用户身份运行的脚本或启动器启动守护程序,则可以将pidfile放入/run/user/$UID其中,这与传统的每用户等效/var/run。请注意,启动器的根部分或以root用户身份运行的启动脚本需要创建目录(对于人类用户,该目录是在用户登录时创建的)。
/run/user/$UID
否则,请在/tmp或下选择一个位置/var/tmp,但这会增加额外的复杂性,因为pidfile的名称是否位于世界可写目录中,无法唯一确定。
/tmp
/var/tmp
在任何情况下,分发者或管理员都可以轻松地(命令行选项,也许还有编译时选项)更改pidfile的位置。