把 pid 写在文件里有什么好处?

经常看到一些服务的进程 id 号是写在一个 pid 文件里:

  1. 把这个 pid 写在文件里有什么好处?
  2. 针对上面的第 1 点,那么其他服务没有把 pid 写在文件里又是怎么做的?(这个问题貌似有点愚蠢,实在操作系统知识缺乏)
  3. pid 文件一般只放一个 pid,当一个服务同时启动多个进程时, 是否需要多个 pid 文件 ?
阅读 7k
4 个回答

pid文件主要用于实现单实例运行进程。过程是这样的:

  1. 进程启动,尝试对pid文件加排它锁

    1. 如果失败则表示有一个实例在运行,退出
    2. 如果成功则表示当前是唯一的实例,getpid()的结果写入这个文件,继续运行
  2. 进程退出或崩溃,系统会自动释放排它锁

补充一下,除了用来防止启动多个实例。另外就是发送控制信号了。例如nginx -s reload 这种命令就是获取到pid文件中的pid,来对这个pid发送信号实现的。

linux 的哲学就是“一切都是文件”。

  • pid 是文件
  • 网络套接字是文件
  • 打印机是文件
  • console 是文件
  • 。。。。

并不是所有的进程都由 pid 文件,pid 文件一般用来防止一个程序重复启动多个副本。

用的最多的还是防止启动多个实例

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