如何编写python程序,让我的Linux机器在收到信号时重新启动?

如何编写python程序,让我的Linux机器在收到信号时重新启动?,python,linux,bash,shell,Python,Linux,Bash,Shell,我有一个主程序“main.py”,它可能会偶尔冻结。每当我检测到这种情况发生时,我希望有一个单独的程序“watch.py”让我的Linux机器重新启动。这些脚本在启动时自动启动,因为我编辑了/etc/rc.local 现在/etc/rc.local看起来像这样- python watch.py & python main.py & 这应该让两个程序同时运行。当我注意到main.py已冻结时,我将手动发出信号,让watch.py(使用远程TCP连接)重新启动。当“watch.py

我有一个主程序“main.py”,它可能会偶尔冻结。每当我检测到这种情况发生时,我希望有一个单独的程序“watch.py”让我的Linux机器重新启动。这些脚本在启动时自动启动,因为我编辑了/etc/rc.local

现在/etc/rc.local看起来像这样-

python watch.py &
python main.py &
这应该让两个程序同时运行。当我注意到main.py已冻结时,我将手动发出信号,让watch.py(使用远程TCP连接)重新启动。当“watch.py”接收到信号时,我的python代码或shell脚本应该是什么来实际重启系统


可能的答案是编写一些python代码来重新启动Linux机器,编写一些python代码以使用某个参数退出,并在注意到该参数后执行“sudo reboot”。

为什么要重新启动整个系统而不仅仅是进程?也许值得研究一下是否有更高级的守护进程监视工具可以检测挂起的进程并自动重新启动它。为什么要重新启动进程而不仅仅是调试它呢?;)重新启动这个过程听起来是个更好的主意。不管怎样,我应该如何通过watch.py完成它?至于调试,最终的代码当然应该是万无一失的,但同时,这也是我需要的。我不知道会发生什么错误,但这必须永远运行,或者直到宇宙再次收缩。完成钉接桩机…@xbug:防御应该是分层的,也就是说,你应该调试这个过程,如果它卡住了,有办法重新启动它。upstart或supervisord中可能有一个现有选项,可以在心跳信号停止时重新启动进程。