我有一个基于python的应用程序,它像feed聚合器一样工作,需要成为init.d脚本的一部分,以便我可以使用start / stop / restart选项控制执行。另外,我希望将init.d脚本设置为cron作业(我在这里有例子)。
我在这里找到了一个样本http://homepage.hispeed.ch/py430/python/daemon
(PS。我不希望脚本本身用python编写)。
答案 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)
我知道这是一个老问题,但实际上您找到的示例是在ubuntu和debian中建议的方法(启动/停止/重启)。然后你可以做一个cron工作来看看你的程序是否正在运行。
(PS。我不希望脚本本身用python编写)。
脚本是用shell命令语言编写的。