2

我有一个基于 python 的应用程序,它的工作方式类似于提要聚合器,需要成为 init.d 脚本的一部分,以便我可以使用启动/停止/重启选项控制执行。此外,我希望将 init.d 脚本设置为 cron 作业(我在这里有示例)。

我在这里找到了一个样本http://homepage.hispeed.ch/py430/python/daemon

(PS。我不希望脚本本身用 python 编写)。

4

4 回答 4

7

您可以考虑为使用 Upstart 的操作系统编写 Upstart 任务。

例子:

# Start zeya
#

description     "Start Zeya music server"

start on startup

task
exec python /home/r00t/code-hacking/serve-music/zeya/src/zeya/zeya.py
--path=/home/r00t/Music

将此添加到文件中,例如 /etc/init 中的“zeya.conf”

然后你可以使用'initctl'来控制工作。例如:

initctl status zeya
initctl stop zeya
于 2009-12-31T10:30:21.900 回答
2

我最近做了类似的事情,并使用Supervisord编写了一些小配置文件。

从初始化脚本(几乎是准系统)中,我简单地调用了带有适当参数的 supervisor-ctl。

此外,您应该注意实际功能(例如start-stop-daemon)因发行版而异。

于 2009-12-31T10:33:20.133 回答
0

确实是一个反问题,但我注意到,您提到了 cron,这意味着您的应用程序将以所谓的守护进程方式定期运行,而不是连续运行。

对于定期运行的应用程序,使用诸如启动、停止和重新启动之类的命令有什么意义?我的意思是,您的应用程序将每小时运行一次(或其他),为什么需要启动、停止和重新启动?

无论如何,既然你提到了 ubuntu,我必须说,你链接的脚本不符合当前的 initscripts 标准,无论是 ubuntu 还是 debian lenny。您可以在中看到正确的模板/etc/init.d/skeleton

重申一下,为什么您需要一个用于cron 作业的初始化脚本

编辑
考虑到评论,即使应用程序崩溃或被终止,保持应用程序运行的有点“规范”的方法是inittab。当然,您也可以使用 cron 作业来完成。

于 2009-12-31T10:47:35.327 回答
0

我在这里找到了一个样本http://homepage.hispeed.ch/py430/python/daemon

我知道这是一个老问题,但实际上您找到的示例是在 ubuntu 和 debian 中推荐的方法(启动/停止/重新启动)。然后你可以做一个 cron 工作来看看你的程序是否正在运行。

(PS。我不希望脚本本身用 python 编写)。

该脚本是用 shell 命令语言编写的。

于 2011-10-18T16:06:53.053 回答