Upstart

CentOS 6 和新貴

  • August 27, 2014

新的 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

如果我發出一個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

該腳本基本上記錄了所有啟動或停止的作業。我發現 CentOS 6 並沒有“發出”任何關於執行級別的資訊。(也不是我嘗試過的其他一些常見事件。’)。查看調試作業在 /tmp/log.file 中創建的日誌文件非常有幫助。通過將我的腳本的開頭更改為:

start on runlevel [345]

start on started sshd

我所有的工作似乎都可以正確啟動。這在後面很痛苦,因為我發現的每個範例都使用前一種語法。

引用自:https://serverfault.com/questions/291546