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

mkh04yzy  于 2023-05-06  发布在  Linux
关注(0)|答案(4)|浏览(206)

我最近偶然发现了一个扩展名为.pid的文件,并查看了它的内部,但没有找到太多。documentation说道:
Pid-File是一个包含进程标识号(pid)的文件,该文件存储在文件系统的明确定义的位置,从而允许其他程序找出正在运行的脚本的pid。
有谁能更清楚地说明这一点,或者指导我了解pid文件中包含的详细信息吗?

e1xvtsh3

e1xvtsh31#

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

332nm8kg

332nm8kg2#

我不确定这是否是唯一的原因,但这是我的训练:
根据您编写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,通常这也意味着死亡,因此在杀死 mydaemon 之前,kill 将被杀死,从而使kill尝试失败。
B)杀死其他PID另外,假设你有***vi /etc/mydaemon/mydaemon.conf***一起运行,PID也可能被杀死,更不用说其他用户的进程,因为你很可能会发出这样的命令作为根。
C)这是一个简单的类unix锁-〉不需要额外的代码/守护进程。PidFiles提供了一种相当简单的方法来创建用户可管理的锁,以防止您无意中生成两次守护进程。

muk1a3rh

muk1a3rh3#

Pidfile包含进程的pid。这是一种约定,允许长时间运行的进程具有更强的自我意识。服务器进程可以检查它以停止自己,或者具有启发式,它的其他示例已经在运行。Pid文件也可以用于手动消除风险,例如pkill -F <some.pid>

2sbarzqh

2sbarzqh4#

要了解pid文件,请参阅此DOC
有些时候,某些应用程序需要额外的插件和实用程序的额外支持。因此,它使用此pid文件作为参考来跟踪这些实用程序和插件进程的运行id。
这就是为什么每当你重新启动一个应用程序,所有必要的插件和依赖的应用程序必须重新启动,因为pid文件将变得陈旧。

相关问题