2010-10-18 91 views
11

是否存在用于存储以用户身份运行的守护进程的pid文件的首选位置?/var/run是标准位置,但这是用于用户守护进程的,因此它不具有写权限。据推测,我的守护进程将从.profile或.bashrc或其他东西开始。只是将它保存到/ tmp一个坏主意?以用户身份存储守护进程的pid文件

+2

所有运行时的数据保存到/ tmp也是白搭,因为任何命名约定你会发明(例如'/ tmp目录/ / .pid')可能已经被另一个应用程序使用,你将无法创建该文件。在'/ tmp'下使用一个随机的dirname会破坏pid文件的想法 - 能够在不扫描进程列表的情况下快速获取pid。 – 2012-08-15 16:26:21

回答

8

如果它正在为用户运行,那么让我们来看看存在哪种用户特定的存储。

嗯。

就是这样!主目录。我知道它最终会来到我身上:-)


对不起,轻刺拳。说真的,我只是将PID存入$HOME/.daemon.pid~/.daemon.pid(当然,你如何命名该文件取决于你)。

这当然,假设您将只有一个守护进程为用户运行。如果没有,你需要有点棘手。


并希望减少你的担心,用户会在不经意间自己的主目录中删除未知文件,这就是为什么你把它“隐藏”通过与.字符开始吧。

大多数没有经验的用户甚至不应该使用请参阅这些和有经验的用户应该知道的比他们更好。

+0

那么用户看到的是hom目录,我认为他们会更有可能删除该文件,如果他们看到它不知道它是什么 – Falmarri 2010-10-18 07:40:15

+1

@Falmarri:那有什么危险?如果您真的需要再次使用PID,您可以随时查看进程表。 PID文件只是一个方便。 – 2010-10-18 07:42:48

+4

这就是为什么你把'.'放在它前面。不知道自己在做什么的用户可能永远不会知道它存在。如果他们经常看到隐藏文件,只要在删除'.bashrc'时出错就会教他们错误的方法:-)如果你是_really_偏执狂,把PID放入'〜/ .dont_EVER_delete_me_or_you_WILL_be_sorry/.daemon.pid' 。 – paxdiablo 2010-10-18 07:43:17

0

我建议你去用户的主目录内的子目录。

~/.programname/.pid 

如果有任何其他用户的配置数据,可以存储在这里也一样,为了避免弄乱主目录。

8

XDG Basedir specification定义你应该在哪里存储这些。
变量$XDG_RUNTIME_DIR定义它的位置,虽然它没有默认值。
最常见的回退(如果变量未设置)为/tmp/service-$USER.id

这有助于保持整洁的宿主目录,同时保持在

相关问题