正如标题所写,我应该让 init 脚本在哪里写入 pid 文件?我应该选择什么标准路径来代替/var/run
?
那里是存储它的好地方吗/tmp
?或者那里有什么缺点?
(历史背景:在现代分布中/var/run
现在是一个符号链接,/var
但我的问题是相同的。)
答案1
简而言之:您可以将其存储在任何地方(例如,/tmp
或/var/tmp
),但这/var/run
是首选标准。
/var/run
是个文件系统层次标准:
此目录包含系统信息数据,用于描述系统自启动以来的情况。启动过程开始时,必须清除此目录下的文件(根据需要删除或截断)。程序可以有一个 /var/run 子目录;对于使用多个运行时文件的程序,我们鼓励这样做。[脚注 37]
一个理想的特点是大多数发行版自动清理(/tmp
与某些发行版在启动时不会清理不同) - 这可以避免过时的 pid 文件:
pidfiles 的正常位置是 /var/run。大多数 unices 会在启动时清理此目录;在 Ubuntu 下,这是通过内存文件系统 (tmpfs) /var/run 实现的。
您可以选择将其存储在何处,但我会遵循标准。
如果您无权访问/var/run
,则应将 pid 文件存储在用户的主目录中,例如~/.my_app.pid
。
答案2
如果您需要非 root 写权限/var/run
,请注意,其中有/var/run/user
供各个用户使用的子目录。您只需要获取当前用户的 UID:
/var/run/user/[$uid]