所以我需要为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我会得到那些pid并杀死那些进程。现在我有几个问题:
此致 波格丹
答案 0 :(得分:4)
使用subprocess
模块从Python启动程序(无论如何这是推荐的方式)。从subprocess.Popen
返回的对象具有terminate()
和kill()
方法以及pid
属性,您可以将其保存并用于再次停止该过程。
在Unix系统上,您可以考虑将PID保存在/var/run/<yourscript>.pid
中的文件中(请参阅Filesystem Hierarchy Standard),然后在请求停止时读取此文件以检索PID。
答案 1 :(得分:1)
我会将你的startup.sh替换为运行这两个脚本的Python脚本。使用subprocess.Popen()来运行新进程,使用terminate()来终止它们。
Python解决了你的第三个问题。否则你必须在Windows下使用cygwin / mingw。