我最近遇到了一个扩展名为.pid的文件,并在其中进行了研究,但没有找到太多东西。文件说:
pid - file是一个包含进程标识号(pid)的文件,该文件存储在文件系统中定义良好的位置,从而允许其他程序找到正在运行的脚本的pid。
有人能提供更多的光在这一点上,或指导我的细节是什么包含在pid文件?
我最近遇到了一个扩展名为.pid的文件,并在其中进行了研究,但没有找到太多东西。文件说:
pid - file是一个包含进程标识号(pid)的文件,该文件存储在文件系统中定义良好的位置,从而允许其他程序找到正在运行的脚本的pid。
有人能提供更多的光在这一点上,或指导我的细节是什么包含在pid文件?
要理解pid文件,请参考此DOC
有时,某些应用程序需要额外的插件和实用程序的额外支持。因此,它使用这个pid文件来跟踪这些工具和插件进程的运行id,以供参考。
这就是为什么当你重新启动一个应用程序时,所有必要的插件和依赖的应用程序都必须重新启动,因为pid文件将变得陈旧。
pid文件包含给定程序的进程id(一个数字)。例如,Apache HTTPD可能会将其主进程号写入一个pid文件(这是一个普通的文本文件,仅此而已),然后使用其中包含的信息来停止自己。您还可以使用该信息自己杀死进程,使用cat文件名。Pid | xargs kill
Pidfile包含进程的pid。这是一种允许长时间运行的流程更有自知之明的约定。服务器进程可以检查它来停止自己,或者有启发式,它的其他实例已经在运行。Pidfiles也可以用来手动消除风险,例如pkill -F <some.pid>
不确定这是否是唯一的原因,但我的练习如下:
根据你编写shell脚本杀死目标进程的方式,你可能会在kill PID杀死你的目标之前杀死它,让我们以mydaemon为例:
kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`
A)瞄准杀人 在32位Linux中,PID通常是一个15位整数,溢出确实经常发生,grep或awk的PID出现在mydaemon的PID之前的几率相当大。在64位的PID数字通常是22位,这种情况发生的可能性要低100倍以上,但仍然很容易发生。
通过杀死你的任何一个管道,你会收到一个SIGPIPE,通常这也意味着死亡,因此杀死会在杀死mydaemon之前被杀死,导致杀死尝试失败。
B)杀死其他pid 此外,假设您已经运行了vi /etc/mydaemon/mydaemon.conf,这个PID也可能被杀死,更不用说其他用户的进程了,因为您很可能会以root身份发出这样的命令。
C)它是一个简单的类unix锁->不需要额外的代码/守护进程。 PidFiles提供了一种相当简单的方法来创建用户可管理的锁,以防止您无意中两次生成守护进程。