我有一个在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 &
谢谢您的任何建议。
答案 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)