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

新手上路,请多包涵

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

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

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

原文由 ifixthat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 616
2 个回答

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

原文由 Rafael Steil 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

根据您编写 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 提供了一种相当简单的方法来创建用户可管理的锁,以防止您无意中两次生成守护程序。

原文由 Carlos Lint 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题