一尘不染

我的pidfile是否必须位于/ var / run中?

linux

我要问的是两种情况:技术上和风格上。

我的应用程序/守护进程可以在其中保存pidfile /opt/my_app/run/吗?

这样做很不好吗?

我的需要是:我的守护程序在特定用户下运行,实现者必须在/var/run,chown和chgrp中的mkdir新目录中运行我的守护程序。似乎仅将pidfile保留在本地(对于守护程序)似乎更容易。


阅读 242

收藏
2020-06-07

共1个答案

一尘不染

我不会将pidfile放在诸如的应用程序安装目录下/opt/my_app/whatever。该目录可以是只读的,可以在机器之间共享,可以由守护程序监视,该守护程序会将任何更改视为可能的闯入尝试。

pidfiles的正常位置是/var/run。大多数unices会在启动时清理此目录;在Ubuntu下,这是通过/var/run内存文件系统(tmpfs)实现的。

如果您从以root用户身份运行的脚本启动守护程序,请让它创建一个子目录,/var/run/gmooredaemon并将其锁定给运行守护程序的用户,然后再su转到该用户并启动该守护程序。

在许多现代Linux系统上,如果您从不是以root用户身份运行的脚本或启动器启动守护程序,则可以将pidfile放入/run/user/$UID其中,这与传统的每用户等效/var/run。请注意,启动器的根部分或以root用户身份运行的启动脚本需要创建目录(对于人类用户,该目录是在用户登录时创建的)。

否则,请在/tmp或下选择一个位置/var/tmp,但这会增加额外的复杂性,因为pidfile的名称是否位于世界可写目录中,无法唯一确定。

在任何情况下,分发者或管理员都可以轻松地(命令行选项,也许还有编译时选项)更改pidfile的位置。

2020-06-07