【问题标题】:What is a .pid file and what does it contain?什么是 .pid 文件,它包含什么?
【发布时间】:2012-01-07 22:21:15
【问题描述】:

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

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

谁能更清楚地说明这一点,或者指导我了解 pid 文件中包含的内容的详细信息?

【问题讨论】:

    标签: linux unix pid


    【解决方案1】:

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

    【讨论】:

    • 那为什么不按名称查找进程呢?当您可以运行“pidof $process_name”并获取 ID 时,为什么还要维护 .pid 文件?
    • @Shnatsel:因为可能有两个同名的进程正在运行,您需要知道哪个进程负责那个 PID 文件。还有其他原因,更多细节在这里找到:unix.stackexchange.com/questions/12815/…
    • 在这种情况下,会有 2 个 pid 文件,您将面临与 PID 查找相同的问题。所以 pidfiles 没有任何好处,只会在这种情况下以及我能想到的任何其他情况下使事情复杂化。我怀疑它们要么出现在 procfs 之前出现,要么被用作可移植工具,因为 procfs 接口在 e.g. Solaris 与 Linux 上的完全不同。
    • 只有一件事:echo filename.pid | xargs kill 不会终止进程。我猜你的意思是:echo $(cat filename.pid) | xargs killecho <process ID> | xargs kill
    • @AlexandrodeOliveira 使用 echo 和 cat 而不是 cat filename.pid | xargs kill 有什么优势吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      要了解pid文件,请参考DOC

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

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

      【讨论】:

      • 您的第一个链接并没有真正回答问题。
      • 虽然链接的材料理论上可以回答问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
      猜你喜欢
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2016-08-20
      相关资源
      最近更新 更多