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

标签 python linux shell

我有一个大型 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)

关于python - 如何从 Shell 捕获错误并重新启动 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52970280/

相关文章:

python - 如何从输出底部删除空格?

python - 如何用另一个数据框替换部分数据框

c++ - 在 C 或 C++ 代码中以编程方式为 Linux 上的 gdb 设置断点

perl - 将系统命令的输出捕获到文本文件的最佳方法?

BASH 字符串解析

Python subprocess.popen 和 rdiff-backup

python - 如何在 GDAL Python 中获得带状数组的正确比例?

Shell 脚本 - 检查语法

android - Linux,Android,缺乏与C的兼容性

linux - bash 脚本中的 Standard_in 错误