我有一个不断运行的 python 脚本(它有一个无限循环),但我希望它在运行时仍然能够接受输入。它将在后台运行,然后在任何时候我都希望能够输入
scriptname stop
并停止它(或类似的东西)。这样它就可以调用关闭方法来保存信息并退出。
目前它在终端的前台运行,并且无法通过键盘中断来停止,所以杀死它的唯一方法是关闭终端或杀死python。
我怎么能做这样的事情?
使用supervisord
. 它的存在是为了管理进程,并提供一个命令界面来启动和停止它们。
当主管杀死一个进程时,它会发送 SIGTERM (或您选择的任何其他信号)。因此,要干净地关闭,您需要处理该信号。
请参阅有关如何处理 SIGTERM 的问题:Python - 捕获所有信号
进程仍然可以在自己的管道上监听输入,并以这种方式发送输出。
如果您在 Windows 中,那么您来对地方了...
只需将您的文件重命名script.py
为script.pyw
并正常使用即可。
您的脚本将在后台运行。
要关闭该脚本:
转到Task Manager,单击Process Tab ,注意python,End Task。
如果您需要更多信息,我已准备好为您提供……
我不确定 Linux 或 Ubuntu。
谢谢。