/run目录专用于存放系统服务运行时临时文件(如pid文件),由tmpfs挂载、重启清空,符合systemd约定;常见路径包括/run/nginx.pid等,可通过ls、lsof、systemctl show或grep pidfile=定位,读取需注意权限与内容有效性验证。

Linux 中的 /run 目录(取代旧版 /var/run)是专用于存放系统服务运行时产生的临时文件,包括 PID 文件。它由 tmpfs 挂载,内容在重启后自动清空,符合 systemd 的运行时约定。
确认 PID 文件是否存在于 /run
大多数由 systemd 管理的服务会将 PID 文件写入 /run/ 下的固定路径,例如:
/run/nginx.pid/run/mysqld/mysqld.pid/run/docker.pid
你可以直接用 ls 查看常见命名模式:
ls -l /run/*.pid /run/*/*.pid 2>/dev/null结合进程 PID 反向验证 PID 文件归属
若已知某进程 PID(比如 1234),可检查其是否在 /run 下打开了 .pid 类型文件:
- 运行
lsof -p 1234 | grep -E '\.pid$',查看是否有匹配的打开文件 - 或检查
/proc/1234/fd/中的符号链接:readlink /proc/1234/fd/* 2>/dev/null | grep '/run/.*\.pid$'
注意:只有进程主动保持该文件描述符打开时,才能通过 fd 发现;若写完即关闭,则不会出现在此列表中。
从 systemd 服务配置中查 PIDFile 路径
systemd 服务通常在 .service 文件中明确声明 PIDFile=。可通过以下方式定位:
- 先查进程所属单元:
systemctl status 1234 2>/dev/null | grep "Unit:" - 再查该单元的 PIDFile 设置:
systemctl show --property=PIDFile <unit-name></unit-name> - 或直接读取配置:
grep -i "^pidfile=" /usr/lib/systemd/system/<unit-name>.service /etc/systemd/system/<unit-name>.service 2>/dev/null</unit-name></unit-name>
安全读取与权限注意事项
/run 下的 PID 文件默认属主为对应服务用户(如 mysql:mysql),权限常为 644 或更严格(如 600)。普通用户可能无权读取:
- 用
sudo cat /run/xxx.pid可绕过权限限制 - 但不建议随意修改或删除 —— 删除会导致服务误判为未运行,重启时可能冲突
- 验证内容是否有效:PID 文件内容应为纯数字且对应一个真实运行中的进程(
kill -0 $(cat /run/xxx.pid) 2>/dev/null && echo "alive")











