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

ifi*_*hat 185 unix linux pid

我最近遇到了一个扩展名为.pid的文件,并在其中进行了探索,但没有找到太多内容.文件说:

Pid-File是包含进程标识号(pid)的文件,该文件存储在文件系统的明确定义的位置中,从而允许其他程序找出正在运行的脚本的pid.

任何人都可以对此有所了解,或者引导我了解pid文件中包含的内容的详细信息?

Raf*_*eil 198

pid文件包含给定程序的进程ID(数字).例如,Apache HTTPD可能会将其主进程号写入pid文件 - 这是一个常规文本文件,仅此而已 - 后来使用其中包含的信息来阻止自身.您也可以使用该信息自行终止该过程cat filename.pid | xargs kill

  • @Shnatsel:因为可能有两个进程正在运行该名称,你需要知道哪个进程负责*那个*PID文件.还有其他原因,详情请见:http://unix.stackexchange.com/questions/12815/what-are-pid-and-lock-files-for (13认同)
  • 为什么不按名称查找过程呢?当你可以运行"pidof $ process_name"并获取ID时,为什么还要维护.pid文件呢? (3认同)
  • 只有一件事:`echo filename.pid | xargs kill`不会杀死进程.我想你的意思是:`echo $(cat filename.pid)| xargs kill`或`echo <进程ID> | xargs杀死`. (3认同)
  • 在这种情况下,将有2个pid文件,您将面临与PID查找相同的问题.所以pidfiles没有任何好处,只会使这个场景中的事情复杂化,以及我能想到的任何其他场景.我怀疑它们要么在procfs之前出现,要么它们被用作可移植性工具,因为例如Solaris上的procfs接口是不同的,与Linux上的有很大不同. (2认同)
  • @Shnatsel 主要用于守护进程本身。当运行诸如“daemonname start /for/this/path”之类的东西时,它可以检查该位置是否已存在 pidfile。是的,您可以检查进程表,但 pid 文件本身的位置可以添加更多信息(例如守护进程是否正在监视特定文件夹)。此外,最简单的机制通常也是最稳健的。最后,如果 pidfile 存在,但该 ID 的进程不存在,则可能表明其他情况,例如其他资源未正确清理。 (2认同)
  • @AlexandrodeOliveira使用echo和cat而不是仅仅使用`cat filename.pid |有优势吗?xargs kill`? (2认同)
  • @Simon您甚至不需要`cat`。只是`xargs -a filename.pid kill`就可以了。即使没有该选项,也最好使用输入重定向运算符代替cat。 (2认同)