Systemd
使用 systemd 將守護程序設置為在啟動時啟動
我正在編寫一個守護程序來使用 jsvc 和這個(可能是 pre-systemd)教程在一個無頭Ubuntu 16.04機器上管理我的 Java 應用程序,並且一直執行,收到錯誤
update-rc.d mydaemon enable
update-rc.d: error: mydaemon Default-Start contains no runlevels, aborting
在Google上搜尋了一下,這似乎與(相當?)最近遷移到
systemd
,我已經確認它正在執行pidof systemd
。我如何實現與啟動時相同的行為
update-rc.d
(更重要的是通過停止服務/etc/init.d/mydaemon stop
而不是在 Java 應用程序需要清理時終止程序)。是systemd
和update-rc.d
不同的系統,還是systemd
只是改變了後者的工作方式?
我沒有 Ubuntu 16.04 來測試它,也沒有為您提供許多細節,但 systemd 具有允許舊
/etc/init.d
腳本繼續工作的兼容性功能。不要使用update-rc.d
來啟用您的守護程序,而是使用等效的 systemd 本機命令:sudo systemctl enable mydaemon
如果這仍然產生相同的錯誤,請將缺少的行添加到腳本的起始註釋集中:
# Default-Start: 2 3 4 5 # Default-Stop: 0 1 6
### BEGIN INIT INFO
和線之間### END INIT INFO
,然後再試一次。請參閱這些行的LSB 核心描述。您還可以使用顯式啟動守護程序sudo systemctl start mydaemon
並詢問其狀態
sudo systemctl status -l mydaemon
有關
man systemd-sysv-generator
兼容性功能,請參閱。請參閱此 wiki以將 System V 或像您這樣的新貴腳本轉換為本機 systemd 單元。