启动时在 /var/run/ 中创建目录

Fro*_*kys 5 ubuntu permissions init-script

我正在使用在 Ubuntu Server 10.04 上运行的 apache2 和 postgres。
我已经删除了这两个应用程序的启动脚本,并且我正在使用 supervisor 来监视和控制它们。我遇到的问题是,这两个都需要 /var/run 中的目录(对它们运行的​​用户具有正确的权限)用于 pid 文件。我如何在启动期间创建这些,因为它们需要以 root 身份创建,然后再分配给正确的用户?

编辑
似乎最好的方法是使用自定义初始化脚本创建目录。由于我根本没有 shell 脚本技能,我该怎么做?

eph*_*ent 6

根据Debian 政策

/var/run并且/var/lock可以作为临时文件系统挂载,因此init.d脚本必须正确处理。这通常相当于在init.d运行脚本时动态创建任何所需的子目录,而不是将它们包含在包中并依赖 dpkg 来创建它们。

显然,Ubuntu 继承自 Debian,据我所知,该政策在那里没有变化。

最好的解决方案是修改您的新启动脚本,以便在启动服务时,如果这些目录不存在,则会创建它们。


Ale*_*yak 1

回复此评论:

目前没有服务的启动脚本。Supervisor 守护进程由 init.d 脚本启动,然后由该服务启动其他服务,该服务不应以 root 身份运行。

如果您的主管是从init.d脚本启动的,那么只需创建另一个init.d脚本,并在主管启动之前运行首选项(如何实现这一点完全取决于您的 **IX 风格)。

在其start方法中创建具有所需权限的所需目录。

在其stop方法中拆除这些目录。