需要用于Python应用程序的init.d脚本

时间:2009-12-31 10:28:00

标签: python ubuntu init.d

我有一个基于python的应用程序,它像feed聚合器一样工作,需要成为init.d脚本的一部分,以便我可以使用start / stop / restart选项控制执行。另外,我希望将init.d脚本设置为cron作业(我在这里有例子)。

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

从init脚本(非常简单),我只是用适当的参数调用supervisor-ctl。

另外,您应该注意到实际功能(例如start-stop-daemon)从发行版到发行版各不相同。

答案 2 :(得分:0)

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

为定期运行的应用程序执行启动,停止和重启等命令有什么意义?我的意思是,你的应用程序每小时运行一次(或者其他什么),为什么需要启动,停止和重启?

无论如何,既然你已经提到了ubuntu,我必须说,你所链接的脚本不符合ubuntu和debian lenny的initscripts的当前标准。您可以在/etc/init.d/skeleton

中查看正确的模板

重申一下,为什么 cron job 需要 initscript

修改
考虑到评论,即使崩溃或被终止,保持应用程序运行的某种“规范”方式是inittab。当然,你也可以用cron工作来完成它。

答案 3 :(得分:0)

  

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

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

  

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

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