首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在后台运行Python脚本,并在崩溃后重新启动它?

如何在后台运行Python脚本,并在崩溃后重新启动它?
EN

Ask Ubuntu用户
提问于 2012-08-14 14:32:24
回答 2查看 26.6K关注 0票数 10

我有一个非常简单的Python脚本,我希望总是在我的Ubuntu12.04服务器上运行。我想用暴发户+ monit。问题是,对于像我这样简单的凡人来说,这些工具似乎相当复杂,我在网上找不到一个简单的例子。

暴发户+暴发户是不是过火了?有人知道更简单的替代方案吗,或者是对暴发户+ monit的一个好教程?如果我只想确保脚本始终在运行,那么monit是否是必需的呢?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2012-08-16 04:16:17

最简单的方法是将其放在/etc/init/something.conf中:

代码语言:javascript
复制
start on runlevel [2345]
stop on runlevel [016]

respawn
exec python /path/to/your/script.py

如果它被杀死或退出非零(就像一个未明的异常),那么Res棋子将启动它。这将回到Ubuntu10.04。

如果你有12.04,你可以得到更多的花哨。以上内容将以root用户身份运行您的脚本。在12.04中,您可以添加setuid/setgid:

代码语言:javascript
复制
start on runlevel [2345]
stop on runlevel [016]

respawn
setuid nobody
setgid nogroup
exec python /path/to/your/python.py

如果您的脚本在没有可用网络的情况下退出,并且计划在不稳定的网络连接上运行它,那么您应该修复它,并使它保持活动/重试。但是,如果你不能,你也可能需要手动启动,每当网络设备出现。因此,您可以将其放在/etc/network/if-up.d/yourscript中(使用chmod +x使其可执行)

代码语言:javascript
复制
#!/bin/sh
exec start wait-for-state WAITER=$IFACE-yourscript WAIT_FOR=something

其中,您的脚本只是这个特定脚本的独占性和独特性,而“某样东西”与作业名称(如前面建议的/etc/init/something.conf )是相同的。

票数 16
EN

Ask Ubuntu用户

发布于 2012-08-14 14:46:17

过去的常用方法是将包含时间戳或进程id的文件写入/tmp,然后检查该进程id是否仍在运行,或者是否时间戳仍然是最近的。

此外,您还可以执行一个简单的while [ 1 ]; do phyton-script.ph; done,如果脚本返回,就会重新启动它。

欲知更多可能性,请提供更多关于您的脚本的信息。尤其是为什么你期望它会意外地退出或崩溃。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/175751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档