python有用的问题,如何根据可执行文件名获得该可执行文件执行后的进程?

作者站长头像
站长
· 阅读数 15

例如 nginx start nginx stop但是可执行文件 并没有与进程关联

我想实现类似热更新的功能

回复
1个回答
avatar
test
2024-06-20

貌似是不能直接根据文件名直接得到执行后的PID的。

有些方法,就是获取进程列表,然后根据关键词过滤,比如 linux 系统上的 pgrep 命令。但是应该不是你想要的解决办法。

nginx -s reload 能上获取pid,是因为 nginx 在运行后会创建一个文件 /run/nginx.pid ,里面会记录 nginx 当前的 pid,所以 nginx 可以通过读取文件内容获取到 pid。

systemctl reload nginx 能获取到 pid ,一个是因为 nginx 服务是由 systemd 启动管理的,所以它能知道 nginx 的 pid 。一个是因为也有类似写pid文件的机制在里面,取决于配置了哪种类型的服务。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容