什么是 .pid 文件,它包含什么?

问题描述 投票:0回答:4

我最近遇到一个扩展名为 .pid 的文件并查看了它但没有找到太多。 文档说:

Pid 文件是一个包含进程标识号 (pid) 的文件,它存储在文件系统的明确定义的位置,因此允许其他程序找出正在运行的脚本的 pid。

任何人都可以对此有更多的了解或指导我了解 pid 文件中包含的内容的详细信息吗?

linux unix pid
4个回答
251
投票

pid 文件包含给定程序的进程 ID(一个数字)。例如,Apache HTTPD 可能会将其主进程号写入一个 pid 文件——这是一个普通的文本文件,仅此而已——然后使用其中包含的信息来停止自己。您也可以使用该信息自己终止进程,使用

cat filename.pid | xargs kill


1
投票

不确定这是否是唯一的原因,但这是我的练习:

根据您编写 shellscript 来杀死所需进程的方式,您最终可能会在杀死目标之前杀死 kill PID,让我们以 mydaemon 为例:

kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`

A) SIGPIPE-ing kill 在 32 位 Linux 中,PID 通常是 15 位整数,溢出确实经常发生,grep 或 awk PID 很有可能先于 mydaemon 出现。在 64 位 PID 中,数字通常是 22 位的,发生这种情况的可能性要低 100 倍以上,但仍然非常可靠。

通过杀死你的任何一个管道,你会收到一个 SIGPIPE,通常这也意味着死亡,因此

kill 会在杀死 mydaemon 之前被杀死,从而使杀戮尝试失败。

B) 杀死其他 PID 另外,假设你有

vi /etc/mydaemon/mydaemon.conf 完全运行,那个 PID 也可能被杀死,更不用说其他用户的进程了,因为你很可能会以 root 身份发出这样的命令。

C) 这是一个简单的类 unix 锁 -> 不需要额外的代码/守护进程。 PidFiles 提供了一种相当简单的方法来创建用户可管理的锁,以防止您无意中生成守护进程两次。


0
投票
Pidfile 包含一个进程的pid。这是一种约定,允许长时间运行的进程更具自我意识。服务器进程可以检查它以停止自身,或者启发式地判断它的另一个实例已经在运行。 Pidfiles 也可以用来方便地手动消除风险,例如

pkill -F <some.pid>


    


-2
投票
要了解 pid 文件,请参阅此

DOC

有时某些应用程序需要额外的插件和实用程序的额外支持。因此,它会使用此 pid 文件来跟踪这些实用程序和插件进程的运行 ID,以供参考。

这就是为什么每当您重新启动应用程序时,所有必要的插件和相关应用程序都必须重新启动,因为 pid 文件将变得陈旧。

© www.soinside.com 2019 - 2024. All rights reserved.