我需要为 python 程序创建启动和停止脚本。我的临时解决方案是使用 startup.sh:
python -m root.scripts.run
python server.py 'localhost' 42345
这将启动我的程序和执行某些计算所需的服务器。现在对于 stop.sh 我只是这样做:
killall -m Python
killall python
killall Python
这有效并停止了我的程序。但是我需要找到一个不那么“残酷”的解决方案,因为这显然会杀死所有与 python 相关的进程。我正在考虑的一个解决方案(不确定是否可能)是在 startup.sh 中获取两个启动进程的 PID 并将它们存储在某个文件中。然后对于 stop.sh 我会得到那些 pids 并杀死那些进程。现在我有几个问题:
- 我提出的解决方案可行吗?如果是这样,我怎样才能获得最近启动的进程的 pid?就存储它们然后从文件中获取它们而言,这是否可行?如果可行,如何实现?
- 对于我的问题,您还有其他建议的解决方案吗?
- 在跨平台方面,在 Windows 上模仿这样的东西有多难?
最佳答案
使用 subprocess
模块从 Python 启动程序(无论如何这是推荐的方式)。从 subprocess.Popen
返回的对象有terminate()
和 kill()
方法以及 pid
您可以保存并用于再次停止进程的属性。
在 Unix 系统上,您可以考虑将 PID 保存在 /var/run/<yourscript>.pid
中的文件中(请参阅 Filesystem Hierarchy Standard),然后在请求停止时读取此文件以检索 PID。
关于python - 获取刚在Python中启动的程序的pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6937245/