init.d 腳本未在啟動時執行
我的腳本沒有在 Ubuntu 下的 vagrant box 中啟動時執行。
我的腳本看起來像這樣 -
#!/bin/bash # /etc/init.d/mailcatcher ### BEGIN INIT INFO # Provides: scriptname # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO mailcatcher --http-ip 192.168.50.10
我對文件的權限如下所示 -
-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh
我執行命令 -
sudo update-rc.d "mailcatcher.sh" defaults
如果我手動執行腳本,它會工作並啟動 mailcatcher。如果我重新啟動電腦,mailcatcher 守護程序不會啟動。我錯過了什麼嗎?
現在是 Ubuntu 的答案。
這是一個 Ubuntu Linux 問題,版本 15 現已發布。Ubuntu 世界現在有了 systemd。但即使在版本 15 之前,Ubuntu 世界就已經是新貴了。真的沒有理由編寫 System 5
rc
腳本。從那裡開始肯定沒有充分的理由。upstart 和 systemd 都做所有的“服務控制”。您需要做的就是描述服務。
系統
一個 systemd 服務單元,要放置在 中
/etc/systemd/system/mailcatcher.service
,是[單元] 描述=Ruby MailCatcher 文件=http://mailcatcher.me/ [服務] # Ubuntu/Debian 約定: EnvironmentFile=-/etc/default/mailcatcher 類型=簡單 ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10 [安裝] WantedBy=多使用者.target
這會自動獲取所有 systemd 控制項之一,例如:
systemctl enable mailcatcher.service
將服務設置為在啟動時自動啟動。systemctl preset mailcatcher.service
如果本地策略允許,將服務設置為在啟動時自動啟動。systemctl start mailcatcher.service
手動啟動服務。systemctl status mailcatcher.service
查看服務狀態。暴發戶
Upstart 類似,將 Fideloper LLC 的 upstart 作業文件修改為此問題給出了以下結果
/etc/init/mailcatcher.conf
:描述“郵遞員” 從執行級別開始 [2345] 在執行級別停止 [!2345] 重生 執行 /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10
這會自動獲取所有暴發戶控制項之一,例如:
initctl start mailcatcher
手動啟動服務。initctl status mailcatcher
查看服務狀態。額外的 daemontools 部分
為了好玩,為了娛樂任何通過 WWW 搜尋到達的使用 daemontools-family 的人,並且為了證明不從 System 5 腳本開始的另一個原因,我通過nosh 工具集的命令
rc
執行該 systemd 服務單元以生成以下 daemontools-family 執行腳本:convert-systemd-units
#!/bin/nosh #執行從./mailcatcher.service生成的文件 #Ruby MailCatcher 目錄 / 讀取配置 --oknofile /etc/default/mailcatcher /usr/bin/mailcatcher --foreground --http-ip 192.168.50.10
實際上,該
convert-systemd-units
命令會生成一個完整的 nosh服務包目錄。使用指定依賴關係和排序資訊的目錄,安裝/var/sv/mailcatcher
在帶有 nosh 的系統中,service-manager
獲取所有 nosh 控制項,例如:
system-control enable mailcatcher.service
將服務設置為在啟動時自動啟動。system-control start mailcatcher.service
手動啟動服務。system-control status mailcatcher.service
查看服務狀態。system-control preset mailcatcher.service
如果本地配置(systemd 樣式預設或/etc/rc.conf{,.local}
)允許,將服務設置為在啟動時自動啟動。甚至不要從System 5
rc
文件開始。查看SaltStack 用於 System 5腳本的這個模板。
rc
即使消除了 SaltStack 參數化,也有 59 行 shell 腳本程式碼,其中大部分是您必須重新發明和重新編寫的通用樣板。再次。Celada 已經指出你在哪裡重新發明了它。systemd 單元文件有 11 行長。新貴作業文件為 8 行。nosh
run
腳本是 6。它們為您完成所有啟動/停止/狀態機制。不要從 System V 開始rc
,尤其是在 Ubuntu Linux 上。進一步閱讀
- 設置 Mailcatcher。2014 年 10 月 21 日。黑客伺服器。菲德勒有限責任公司。
- 詹姆斯·亨特和克林特·拜魯姆 (2014)。 “實用程序”。 新貴食譜。
- 喬納森·德博因·波拉德 (2014)。並排查看執行腳本和服務單元。. 經常給出答案。