Upstart
CentOS 6 和新貴
新的 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
我所有的工作似乎都可以正確啟動。這在後面很痛苦,因為我發現的每個範例都使用前一種語法。