Debian
systemd 和不存在的 *.service 文件:它們是通用的嗎?
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
. 例子是mysql
和apache2
。使用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 5
rc
腳本/etc/init.d/
。因此,它正在處理這些腳本,間接通過update-rc.d
讀取它們的 LSB 標頭來啟用/禁用守護程序。