【问题标题】:Start PYTHON script automatically [closed]自动启动 PYTHON 脚本 [关闭]
【发布时间】:2013-11-25 00:31:17
【问题描述】:

我编写了一个 PYTHON 脚本来控制我家的供暖和空调系统。它通过 MYSQL 数据库获取信息和设置,并通过 USB/Serial 通信与外界通信。它只是在运行一个无限循环,检查温度等。 目前在带有 Arch Linux 的 Raspberry PI 上运行。 由于它对我家人的舒适至关重要,我希望它相当可靠,并从关机中优雅地恢复。 我可以在控制台上启动它,并且最新的版本还没有在我身上崩溃,所以它看起来很稳定。 我的问题:让我自动启动它的简单方法是什么? 如何自动检查它是否正在运行,如果它崩溃了,重新启动它?

我怀疑答案可能与 Cron 相关,或者可能与它的守护进程有关,但我不是 OO 程序员,所以目前这些看起来有点令人生畏。

【问题讨论】:

  • 使用 cron 每分钟用 ps 检查进程是否正在运行,如果没有则启动它。此外,您可能会将带时间戳的输出放在某处,以便您可以检查进程是否挂起并重新启动它。
  • 我肯定会选择 CRON。开始很简单。看看这个链接CRON and Python
  • 这个问题在RaspberryPI SE得到了回答
  • 这个问题其实和mysql或者python没什么关系;这只是如何确保某些东西正在运行,这是一个高可用性主题。

标签: python mysql cron daemon


【解决方案1】:

设置一个 cronjob 每隔 5 分钟左右运行一次,以监控任务是否正在运行。

这是一个在 bash 中可行的示例

# assuming your app is called temp_monitor.py

cmd="ps ux | grep temp_monitor.py | grep -v grep"
start="python temp_monitor.py"

# run the command to check
eval "$cmd"

# did the previous command return a non-zero exit code?
if [ $? -ne 0 ]; then
  $start
fi

【讨论】:

    【解决方案2】:

    在 cron 中,添加一个“定期”运行的作业,以确保您的应用程序正在运行(psgrep 的某些种类会为您提供)

    其次,将启动程序的脚本添加到系统启动时读取的/etc/init.d 目录。 (注意:我不记得在 rasp/pi 上运行的 linux 版本的确切目录,我将把它留给 OP 练习)

    少量侦查指向this自动启动功能的解决方案

    【讨论】:

      【解决方案3】:

      对于 Python 程序员来说,最自然的解决方案是supervisord。现在可能大多数 *nix 系统都提供它 OOTB(即作为一个包),有些实际上将它用作他们平台的一部分。

      【讨论】:

        猜你喜欢
        • 2019-04-23
        • 2014-01-10
        • 2018-12-04
        • 1970-01-01
        • 2014-11-07
        • 1970-01-01
        • 1970-01-01
        • 2013-02-08
        • 2014-07-02
        相关资源
        最近更新 更多