Debian

systemd 和不存在的 *.service 文件:它們是通用的嗎?

  • January 6, 2016

systemd單位儲存在/lib/systemd/system例如:

rsync.service
avahi-daemon.socket
bluetooth.service
cups.service

當您使用以下命令時:

systemctl enable name

將 name 替換為您要啟用的服務單元的名稱(例如,apache2)。此命令讀取所選服務單元的部分並創建指向目錄及其子目錄中文件的[Install]適當符號連結。/lib/systemd/system/name.service``/etc/systemd/system/

但是*.service有些包沒有/lib/systemd/system. 例子是mysqlapache2。使用systemctl啟用它們工作正常:

# systemctl enable apache2
Synchronizing state for apache2.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d apache2 defaults
Executing /usr/sbin/update-rc.d apache2 enable

或者

# systemctl enable mysql
Synchronizing state for mysql.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d mysql defaults
Executing /usr/sbin/update-rc.d mysql enable

查找與這些服務相關的文件時,我沒有得到任何結果:

# find /etc/systemd/system/ -iname "*apache2*"
# find /etc/systemd/system/ -iname "*mysql*"

systemd 如何找出要啟用的 apache2 或 mysql?

使用 update-rc.d 將 apache2.service 的狀態與 sysvinit 同步…

這就是你的答案,就在那裡。systemd 沒有這些守護程序的服務單元。但是它們有 System 5rc腳本/etc/init.d/。因此,它正在處理這些腳本,間接通過update-rc.d讀取它們的 LSB 標頭來啟用/禁用守護程序。

引用自:https://unix.stackexchange.com/questions/187012