我有一个大型 Python 程序在 Raspberry Pi 上运行,每隔一两周它就会重载并抛出内存不足错误。我想捕获这些错误并调用一个 shell 脚本“kill-and-relaunch.sh”(下面的代码),它将终止正在运行的 Python 进程并重新启动程序......所以它需要运行 shell 命令作为完全独立的过程。两个问题:(1)调用 shell 的最佳方法是什么,该 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 &
感谢您的任何建议。
也许 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)
我是一名优秀的程序员,十分优秀!