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

2024-10-05 14:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

(注意,我不希望脚本是用python本身编写的)。


Tags: 脚本应用程序http示例initfeed选项作业
3条回答

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

从init脚本(几乎是赤裸裸的)中,我只使用适当的参数调用supervisor ctl。

另外,您应该注意到,实际的函数(例如start-stop-daemon)因发行版而异。

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

对于一个定期运行的应用程序,使用start、stop和restart这样的命令有什么意义?我是说,你的应用程序每小时运行一次(或者其他什么),为什么需要启动、停止和重启?

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

重申一下,为什么您需要initscript来执行cron作业

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

您可以考虑为使用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

相关问题 更多 >