我正在运行一个 CentOS6 实例,并且有一个依赖于 sshd 的 upstart 作业正在运行。但是当我启动该框时,该作业无法启动,我猜是因为 sshd 实际上还没有运行。有没有办法可以延迟 upstart 作业的启动,直到所有正常的 init 脚本都已启动?
答案1
我最终搞清楚了这一点。CentOS6 使用 upstart 作为其 init 程序,但它初始化的脚本/etc/init
之一是rc.conf
,它会启动老式的 rc 脚本。因此,如果您需要您的程序在这些脚本之后启动,您可以输入:
start on started rc stop on stopped rc
在你的 upstart 脚本中你应该一切顺利。
答案2
您可以使用脚本中的 pidfile /var/run/sshd.pid 检查进程 sshd,以确保它正在运行。
if [ -f /var/run/says.pid]; then
"do what you want with your script"
fi
如果 pid 尚未出现,您可以在其中放置逻辑,以便在检查 sshd 后进入睡眠状态。
答案3
只需将您的脚本添加到 /etc/rc.d/rc.local。您的脚本将在所有其他初始化脚本之后执行。