CentOS 6和新贵

新的CentOS 6自带了Upstart,取代了init。 我试图将一个/ etc / inittab文件转换为新的upstart格式。 这个特定的服务器只有15个左右的inittab条目,但是,其他服务器有> 30个。 我们主要想要inittab的“respawn”部分和新贵。 不过,我一直在阅读我能find的所有暴发户文档(这几乎都是基于Ubuntu的,而且显然是在一个旧版本的暴发户上)并没有到达任何地方。 我可以创build一个configuration文件(可以称之为/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)

我错过了明显的东西吗?

    我发现了一个非常非常有用的新贵脚本,用于将来有问题的人。 把这个放到/ 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 

    这个脚本基本上logging所有启动或停止的作业。 我发现CentOS 6不会“排放”任何有关运行级别的东西。 (也没有我曾经尝试过的其他一些常见事件)。 查看debugging作业在/tmp/log.file中创build的日志文件是非常有用的。 通过改变我的脚本的开始:

     start on runlevel [345] 

     start on started sshd 

    我所有的工作似乎开始正确。 这是后面的痛苦,因为我发现每个例子都使用了前面的语法。

    对不起,我可以用下面的方法来解决这个问题:

     start on stopped rc RUNLEVEL=[345] 

    “停止”不是一个错字 – rc进入运行级别后似乎停止。

    这就是我所做的(CentOS 6,Upstart 0.6.5)来debugging重生问题。 在不同的terminal,做

     sudo initctl log-priority debug sudo tail -F /var/log/messages