如何从Shell捕获错误并重新启动Python

时间:2018-10-24 13:29:20

标签: python linux shell

我有一个在Raspberry Pi上运行的大型Python程序,每隔一两周它就会过载,并抛出内存不足错误。我想捕获这些错误并调用shell脚本“ kill-and-relaunch.sh”(下面的代码),该脚本将终止正在运行的Python进程并重新启动程序...因此它需要将shell命令作为完全独立的过程。两个问题:(1)调用shell的最佳方法是什么,它可以杀死原始的Python进程; (2)将错误捕获代码放在已经在多个进程中运行的Python程序中的位置...我需要在每个进程中进行错误捕获吗?

这是我要调用的shell命令:

kill $(ps aux | grep '[p]ython -u home_security.py' | awk '{print $2}')
cd ~/raspsecurity
source ~/.profile
workon py3cv34
nohup python -u home_security.py &

谢谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

您可以在cronjob中启动Shell脚本,并将错误(或全部)输出添加到文件中(如此处https://stackoverflow.com/a/7526988/7727137所述)。

答案 1 :(得分:0)

也许subprocess可能有帮助?

import subprocess

# do something

try:

    # trap the anticipated error zone

except:  # Best if you catch the specific error anticipated instead of catch-all.

    # log the error if you wish
    subprocess.run(my_ps_script)