2024-10-05 14:23:39 发布
网友
我有一个基于python的应用程序,它像一个feed聚合器一样工作,需要成为init.d脚本的一部分,这样我就可以使用start/stop/restart选项控制执行。另外,我希望init.d脚本设置为cron作业(这里有一个示例)。
我在这里找到一个样本http://homepage.hispeed.ch/py430/python/daemon
(注意,我不希望脚本是用python本身编写的)。
我最近做了类似的事情,并使用Supervisord编写了一些小的配置文件。
从init脚本(几乎是赤裸裸的)中,我只使用适当的参数调用supervisor ctl。
另外,您应该注意到,实际的函数(例如start-stop-daemon)因发行版而异。
start-stop-daemon
一个反问题是,但我注意到,你提到了cron,意思是,你的应用程序将定期运行,而不是以所谓的后台程序的方式连续运行。
对于一个定期运行的应用程序,使用start、stop和restart这样的命令有什么意义?我是说,你的应用程序每小时运行一次(或者其他什么),为什么需要启动、停止和重启?
无论如何,既然你提到了ubuntu,我必须说,你链接的脚本既不符合ubuntu的initscripts标准,也不符合debian lenny的initscripts标准。您可以在/etc/init.d/skeleton中看到正确的模板
/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
我最近做了类似的事情,并使用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任务。
示例:
把它添加到一个文件中,比如/etc/init中的“zeya.conf”
然后可以使用“initctl”控制作业。例如:
相关问题 更多 >
编程相关推荐