我正在尝试使用码头-基座图像将当前基于VM的基础设施迁移到基于Docker的基础设施,后者使用runit/runsv启动和监督系统服务。现在,虽然安装自写Python程序作为服务显然非常容易,但我很难将/etc/init.d/*脚本转换为runit服务。
有时这很容易,而且http://smarden.org/runit/runscripts.html上也有一个列表,但是其中一些脚本不能使用(最新版本的) Ubuntu路径,我还想知道我是应该将进程嵌入到chroot中,还是让它作为不同的用户运行。
那么,是否有一种安全可靠的方法将在Ubuntu中找到的init脚本转换为简单的runit运行脚本?
发布于 2015-09-30 01:45:25
目前,没有针对runit的自动化方法。
长答案
解决这一问题有几种方法。
使用预构建脚本
第一种方法是预先构建一组脚本。这些可以从其他项目中提取出来。Void使用runit作为它的基础init和监控程序,因此它可能会引起人们的兴趣。有一个名为runit-脚本的项目可以满足您的需要。我会为我自己的项目监督-脚本做一个无耻的插件,它有几个已经准备好了,尽管这个项目还在开发中。
使用框架
第二种方法是提供一个框架,以简化脚本编写的转换。点着是一种可能性。另外,Toki的监督脚本框架 (不要与我自己的项目混淆)也可以提供您想要的东西。在这种情况下,没有预先构建的定义,但是您可以获得一些shell脚本(可能还有其他程序)来帮助您更容易地进行转换。
第三是借用其他项目的脚本。这意味着出去真正地寻找他们。外面有几个,但你得好好看看。
最后,有时候你只需要自己写。坦率地说,如果您感到绝望,请复制原始的/etc/init.d/(任何)文件,将其放在一边,然后编辑该文件。通常,在init.d脚本的底部,您会找到一个CASE语句&朋友,从那里您可以看到是否有任何奇怪的烘焙命令行开关,这些开关不应该在那里,而应该在那里。不要为start)和stop)中包含的内容而烦恼,因为它们在使用主管时不适用。环顾四周,看看是否需要设置/var/run/(无论什么)目录,这也总是很重要的(如果创建它,不要忘记设置所有权!)在顶部,如果作者做对了,通常会有一组包含真正守护进程名称的环境变量,以及它的选项。在那里,您通常可以快速拼凑一个小脚本。
https://unix.stackexchange.com/questions/175942
复制相似问题