9

我的问题与这个问题有关,但有问题的进程是从 cron 运行的,并且由非 root 用户运行。因此,许多用户并没有真正的主目录(或者他们的主目录指向/usr/share/package_name的不是 PID 文件的理想位置)。

存入/var/run是有问题的,因为这个目录除了 root 是不可写的。

我可以使用/tmp,但我想知道出于安全原因这是否是理想的。

我可以安排一个启动脚本来创建一个/var/run由相应用户拥有的目录(我不能在包安装时执行此操作,因为/var通常安装为 tmpfs,因此不是持久的)。

这里的最佳做法是什么?

4

1 回答 1

3

好问题:),我现在完全一样。我不确定这是否是正确的答案,但我希望它有所帮助,我也希望得到反馈。

我搜索了一下,发现将每个用户的守护进程注册为 dbus 服务是一个优雅的解决方案。dbus 可以确保服务只运行一次。不需要pidfile。

另一种解决方案(我当前的)是在如下目录中创建 PID 文件:

$HOME/.yourdaemon/pid

在你发表评论后,我意识到你不能写信给家里。我建议研究一下 dbus

更新

我有个主意。如果您正在使用 /tmp,但正在寻找一个名为 yourdaemon.pid.UNIQUE_KEY 并且由守护程序用户拥有的 pid 文件,该怎么办?这应该可以正常工作。

UNIQUE_KEY应该是随机生成的(首选使用 tempnam,因为它是竞争条件证明)。

于 2013-06-03T21:22:27.217 回答