RHEL7/CentOS7 有一个专用文件夹:$XDG_RUNTIME_DIR(例如 /run/user/1000)用于存放 pid 文件,该文件夹是 tmpfs。但是 RHEL6/CentOS6 没有 $XDG_RUNTIME_DIR。
RHEL6(还有 RHEL7)有一个使用类似类型的文件夹:/dev/shm。经过一些测试和在互联网上搜索后,我意识到它是用于 IPC 目的的方便位置,并且似乎可以将小的 pid 文件放在其中。
所以问题是:有没有缺点将此文件夹用于 pid 文件。
(不使用其他文件夹(如 /tmp)的示例:有一个 crontab 作业每隔几天删除 pid 文件,导致服务不稳定)
参考:
https://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html https://wiki.archlinux.org/index.php/tmpfs
答案1
在 RHEL 6 上,PID 文件几乎总是位于/var/run
其子目录中。此目录仅在启动时清除。在 RHEL 7 上,此目录现在位于其子目录中,/run
并且/var/run
与其建立符号链接以实现向后兼容。
您提到的目录,$XDG_运行时目录,由用户流程,而不是系统服务。
不过,你不应该滥用/dev/shm
这个。这个目录用于进程通过共享内存进行通信提供后备存储。
答案2
您可以使用此区域放置 pid 文件,没有任何缺点。实际上,您可以将 pid 文件放置在您的应用程序有写入权限的任何地方。将 pid 文件放置在特定位置是一种惯例,这样可以轻松找到它们,并且不会污染周围的一切。此外,将文件放置在 tmpfs 中可以确保系统重启后不会有旧的 pid 文件。