新的 CentOS 6 带有 Upstart,取代了 init。我正在尝试将 /etc/inittab 文件转换为新的 upstart 格式。这个特定的服务器只有 15 个左右的 inittab 条目,但是,其他服务器有 >30 个。我们主要想要 inittab 和 upstart 的“重生”部分。但是,我一直在阅读我能找到的所有 upstart 文档(几乎全部基于 Ubuntu,而且显然是在较旧版本的 upstart 上)并且一无所获。我可以创建一个配置文件(我们称之为 /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
Run Code Online (Sandbox Code Playgroud)
如果我发出一个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
Run Code Online (Sandbox Code Playgroud)
以及我在不同示例中提到的十几种其他方式。似乎没有人启动脚本。(test.conf 和这个文件夹中的所有其他文件一样,由 root 拥有,并且是 644)
我错过了一些明显的东西吗?
Bri*_*ian 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
Run Code Online (Sandbox Code Playgroud)
这个脚本基本上记录了所有开始或停止的作业。我发现 CentOS 6 不会“发出”任何关于运行级别的信息。(也不是我尝试过的其他一些常见事件。')。查看调试作业在 /tmp/log.file 中创建的日志文件非常有帮助。通过更改我的脚本的开头:
start on runlevel [345]
Run Code Online (Sandbox Code Playgroud)
到
start on started sshd
Run Code Online (Sandbox Code Playgroud)
我所有的工作似乎都可以正确启动。这在后面很痛苦,因为我发现的每个例子都使用了以前的语法。
小智 15
很抱歉进行 necroposting,但我设法通过使用以下方法解决了这个问题:
start on stopped rc RUNLEVEL=[345]
Run Code Online (Sandbox Code Playgroud)
“stopped”不是错字——rc 似乎在进入运行级别时停止。
这就是我为调试重生问题所做的(CentOS 6,Upstart 0.6.5)。在不同的终端,做
sudo initctl log-priority debug
sudo tail -F /var/log/messages
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32907 次 |
最近记录: |