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?
答案1
使用 update-rc.d 将 apache2.service 的状态与 sysvinit 同步...
你的答案就在那里。 systemd 没有这些守护进程的服务单元。但有适合它们的 System 5rc
脚本/etc/init.d/
。因此它正在处理这些脚本,间接通过update-rc.d
读取它们的 LSB 标头来启用/禁用守护进程。