如何使用等效的Ctrl + C中断Python后台守护程序(强制KeyboardInterrupt异常)

时间:2019-05-08 08:55:33

标签: python-2.7 background-process daemon keyboardinterrupt

我有一个Python守护程序,该守护程序在执行另一软件期间监视机器性能。基本上,它使用ps检索目标进程的数据,并将其写入CSV文件,以便在守护程序停止时进行绘制。

如果守护程序在终端中作为前台进程运行,则用户可以使用 Ctrl + C 将其停止,这将导致KeyboardInterrupt异常。我捕获了该异常,然后绘制了CSV的内容。

问题出在我必须使用nohup myDaemon.py &在后​​台进程中启动守护程序时。它可以正常工作,因为它会生成CSV,但是由于我无法强制KeyboardInterrupt异常,因此如果我使用 Ctrl 以外的其他方法杀死或停止后台进程,则不会自动绘制CSV + C

我要避免的是必须将绘图部分移动到单独的脚本中,并在停止守护程序后手动运行它。

1 个答案:

答案 0 :(得分:0)

找到了kill手册页的答案。事实证明,信号-2(SIGINT)等同于 Ctrl + C 。测试了它在kill -2 <Background_Daemon_PID>上的运行效果,效果很好。