首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将sysvinit/upstart init脚本转换为runit

将sysvinit/upstart init脚本转换为runit
EN

Unix & Linux用户
提问于 2014-12-26 01:56:41
回答 1查看 1.6K关注 0票数 5

我正在尝试使用码头-基座图像将当前基于VM的基础设施迁移到基于Docker的基础设施,后者使用runit/runsv启动和监督系统服务。现在,虽然安装自写Python程序作为服务显然非常容易,但我很难将/etc/init.d/*脚本转换为runit服务。

有时这很容易,而且http://smarden.org/runit/runscripts.html上也有一个列表,但是其中一些脚本不能使用(最新版本的) Ubuntu路径,我还想知道我是应该将进程嵌入到chroot中,还是让它作为不同的用户运行。

那么,是否有一种安全可靠的方法将在Ubuntu中找到的init脚本转换为简单的runit运行脚本?

EN

回答 1

Unix & Linux用户

发布于 2015-09-30 01:45:25

,简短的答案,

目前,没有针对runit的自动化方法。

长答案

解决这一问题有几种方法。

使用预构建脚本

第一种方法是预先构建一组脚本。这些可以从其他项目中提取出来。Void使用runit作为它的基础init和监控程序,因此它可能会引起人们的兴趣。有一个名为runit-脚本的项目可以满足您的需要。我会为我自己的项目监督-脚本做一个无耻的插件,它有几个已经准备好了,尽管这个项目还在开发中。

使用框架

第二种方法是提供一个框架,以简化脚本编写的转换。点着是一种可能性。另外,Toki的监督脚本框架 (不要与我自己的项目混淆)也可以提供您想要的东西。在这种情况下,没有预先构建的定义,但是您可以获得一些shell脚本(可能还有其他程序)来帮助您更容易地进行转换。

借用现有的脚本和工具

第三是借用其他项目的脚本。这意味着出去真正地寻找他们。外面有几个,但你得好好看看。

用艰难的方式做

最后,有时候你只需要自己写。坦率地说,如果您感到绝望,请复制原始的/etc/init.d/(任何)文件,将其放在一边,然后编辑该文件。通常,在init.d脚本的底部,您会找到一个CASE语句&朋友,从那里您可以看到是否有任何奇怪的烘焙命令行开关,这些开关不应该在那里,而应该在那里。不要为start)stop)中包含的内容而烦恼,因为它们在使用主管时不适用。环顾四周,看看是否需要设置/var/run/(无论什么)目录,这也总是很重要的(如果创建它,不要忘记设置所有权!)在顶部,如果作者做对了,通常会有一组包含真正守护进程名称的环境变量,以及它的选项。在那里,您通常可以快速拼凑一个小脚本。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/175942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档