我有一个python守护程序,可以在执行另一个软件时监视机器性能。它基本上用ps
检索目标过程的数据,并将其写入守护程序停止时要绘制的CSV文件。
如果守护程序是作为前景过程以终端运行的,则用户可以使用 ctrl ctrl> ctrl> ctrl> c 停止它,什么将迫使KeyboardInterrupt
例外。我捕获了该例外,然后绘制CSV的内容。
当我必须在nohup myDaemon.py &
的背景过程中启动守护程序时,问题就来了。它的工作正常,因为它会生成CSV,但是由于我无法强制KeyboardInterrupt
例外,如果我使用 ctrl 以外的其他方法杀死或停止背景过程,则CSV不会自动绘制。c 。
我要避免的是必须将绘图零件移至单独的脚本并在停止守护程序后手动运行它。
找到了答案读取kill
MAN页面。事实证明,信号-2(sigint(等效于 ctrl c 。测试了它运行kill -2 <Background_Daemon_PID>
并工作正常。