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

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.例子是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?

答案1

使用 update-rc.d 将 apache2.service 的状态与 sysvinit 同步...

你的答案就在那里。 systemd 没有这些守护进程的服务单元。但有适合它们的 System 5rc脚本/etc/init.d/。因此它正在处理这些脚本,间接通过update-rc.d读取它们的 LSB 标头来启用/禁用守护进程。

相关内容