硬重启后/ var / run中的目录被删除


19

我将我的狮身人面像pid保留在/var/run/sphinx/searchd.pid中,但是每次我硬重启目录/ var / run / sphinx都会消失并且sphinx无法启动。有没有办法使该目录生效或自动创建该目录?人们通常如何处理这种情况?我使用Ubuntu Hardy

ubuntu  pid 

你能给我们输出mount吗?
reconbot

Answers:


18

该目录在设计上是临时的。如果其内容在整个启动过程中卡住,则可能会发生各种丑陋的效果,因为各种控制脚本会在那里查看以查看它们应发出哪些信号。在最新的系统上,这种临时性是通过挂载/var/run为来实现的tmpfs,而较早的系统只是在启动时删除了目录中的所有内容。

因此,您需要配置Sphinx或其启动脚本来创建该目录,或者直接将PID文件写入/var/run


4
+1表示/ var / run。但是请注意,他不希望PID文件在重新启动后保持不变。只是狮身人面像目录。
史蒂夫·弗利

15

至少有两次机会:

  • 更改您的初始化脚本来执行 mkdir -p /var/run/sphinx/

要么

  • 设置pid_file = /var/run/sphinx-searchd.pid/etc/sphinx.conf

我是第二个。


2
当然,这意味着启动脚本必须以root用户身份运行才能直接写入/ var / run或在其中创建目录。真烦人...
Eloff 2012年

我也选择了第二个解决方案。似乎有优先级(cron,ssh,atd,syslog)。
BillMan

2

现在有一个集中的机制来创建诸如此类的临时文件和目录。希望使用此方法的服务可以在自己的启动脚本中删除mkdir命令,而可以通过Ubuntu将.conf文件放置在/etc/tmpfiles.d、/run/tmpfiles.d或/usr/lib/tmpfiles.d中。服务似乎更喜欢最后一种选择。根据您的情况创建一个文件/usr/lib/tmpfiles.d/sphinx.conf
该文件的内容为:
d /var/run/sphinx 0755 root root

这里d代表目录,旁边是路径,权限,所有者和组。
这将/var/run/sphnix在重新启动时创建目录。

查看完整的文档tmpfiles.d

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.