CentOS 6和新贵


18

新的CentOS 6带有Upstart,取代了init。我正在尝试将/ etc / inittab文件转换为新的upstart格式。该特定服务器仅具有15个左右的inittab条目,但是其他服务器具有> 30个。我们主要是想要inittab和新贵的“重生”部分。但是,我一直在阅读我能找到的所有暴发户文档(这几乎全部基于Ubuntu,显然是在暴发户的较旧版本上),却一无所获。我可以创建一个配置文件(将其称为/etc/init/test.conf)。该文件包含此文件(注释,已匿名)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

如果我发布initctl reload-configuration工作,则该工作得到认可。我可以通过打电话来启动它,initctl start test然后工作就会开始。

但是,此操作仅在手动重新启动时才起作用。我尝试将启动命令修改为以下内容,但都没有运气

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

以及其他示例中提到的其他十几种方式。似乎没有人启动脚本。(test.conf与该文件夹中的所有其他文件一样,由root和644拥有)

我是否缺少明显的东西?

Answers:


32

对于将来遇到问题的人,我发现了一个非常非常有用的新贵脚本。把它放到/ etc / init /

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

该脚本基本上记录了所有开始或停止的作业。我发现CentOS 6不会“散发”任何有关运行级别的信息。(也不是我尝试过的其他一些常见事件。”)。查看调试作业在/tmp/log.file中创建的日志文件非常有帮助。通过将脚本的开头更改为:

start on runlevel [345]

start on started sshd

我所有的工作似乎都能正常启动。这在后面很痛苦,因为我发现的每个示例都使用了以前的语法。


如果我可以不止一次地投票赞成,那我将拥有。
彼得·蒙斯

15

很抱歉,您可以使用以下方法来解决死灵问题:

start on stopped rc RUNLEVEL=[345]

“ stopped”不是错字-rc似乎在进入运行级别时就停止了。


2
谢谢你的提示!死灵书太棒了,它有帮助!
Brian

5

这就是我所做的(CentOS 6,Upstart 0.6.5)调试重生问题。在另一个终端中,

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.