如何使用 systemd 永远 运行 一个 python 脚本并在它在 raspberry pi 3 中途死机时重新启动?

how to use systemd to run a python script forever and restart if it dies halfway on raspberry pi 3?

我读到 raspberry pi 3.

upstart 已过时,支持 systemd

我的问题是如何 运行 一个 python 脚本 :

a) 永远,除非我手动杀死它 b) 如果由于某些异常而死亡或停止 运行ning 无需任何人为干预

,则可以重新启动

我的 python 脚本本身已经在使用像 schedulewhile True 循环这样的模块来每隔几秒保持 运行 某些作业。

我只是担心它会在一段不确定的时间后 die/stop(确实如此)。

如果它停止了,我只想让它重新启动。

目前,我 运行 脚本通过双击在 Python IDLE (2.7) 中打开,然后 运行 模块打开。

什么是 运行 的最佳方法并打开一个 python 脚本并让它 运行 连续不间断然后让它在死/停止时自动重启原因?

看到这张照片,它在凌晨 5 点突然自行停止

一个更简单的方法可能是在脚本中处理失败。如果由于某些异常而失败,请将有问题的代码包装在 try:except 块中并在脚本中优雅地处理它。

也就是说,post 包含使用 systemd 执行 BASH 脚本所需的信息:

https://unix.stackexchange.com/questions/47695/how-to-write-startup-script-for-systemd

在您的脚本中,您可以轻松地 运行 一个 python 脚本并捕获其 return 值(当它 return 在您的情况下失败时)并做出适当的反应.

像这样:

#!/bin/bash
python ~/path/to/my/script/myScript.py

if [ $? -ne 0 ] ; then #handle the failure here.

如果这也不起作用,您可以创建一个脚本,其唯一任务是调用另一个脚本并处理其故障,然后使用 systemd 调用 that 脚本。

我觉得你应该看看 Python 主管。 Supervisor 将在发生崩溃甚至机器重启时管理重启。

http://supervisord.org/