在全新安裝 OpenSuse 12.3 時,我想「守護」一個程式。而且,在互聯網上找到的所有示例中,我發現我必須先創建一個/etc/init.d/myscript
基於/etc/init.d/skeleton
...
但我沒有/etc/init.d/skeleton
...這個文件還有其他地方嗎?或者也許我需要安裝一些東西?
系統是最新的,我先檢查了一下。
我知道我可以嘗試複製另一個現有/etc/init.d
腳本並修改它,或者建立一個新腳本,但我會知道我是否做錯了,或者是否有另一種特殊的方法可以在 OpenSuse 上執行此操作。
答案1
我不確定文件在哪裡消失,但我希望此更改與/etc/init.d/skeleton
傳統的替換有關,因為 OpenSUSE 12.與眾所周知的 initscripts 完全兼容,但我更喜歡使用啟動服務的模型。SysV init daemon
systemd
systemd
systemd
在我看來,傳統的初始化腳本可能很棘手,有時,它們可能需要更深入的 shell 腳本知識。另一方面,systemd
“initscript”或unit
服務的設定檔(man systemd.unit
)更容易維護,因為它具有與.INI
檔案類似的簡單語法。您可以嘗試編寫一些單元檔案並透過將該檔案拖放到/etc/systemd/system
目錄中來啟用它。該目錄的優先權高於預設目錄/usr/lib/systemd/system
。守護程式單元的範例sshd
如下:
[Unit]
Description=OpenSSH Daemon
After=syslog.target network.target
[Service]
EnvironmentFile=/etc/sysconfig/ssh
ExecStartPre=/usr/sbin/sshd-gen-keys-start
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
或者您可以堅持使用您所使用的“舊版”啟動腳本。但你會失去一些簡潔的功能,systemd
例如:
- 更快的啟動時間,真正的服務並行啟動
- 自動依賴性處理
- 監控服務並自動重新啟動崩潰的服務
- 以及更多
最後,請記住,如果存在sshd.service
與 initscript ( ) 具有相同基本名稱的單元 ( /etc/init.d/sshd
),則該 initscript 將被忽略,並且systemd
將優先使用該單元。