![systemd 和不存在的 *.service 文件:它们是通用的吗?](https://linux22.com/image/61402/systemd%20%E5%92%8C%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%20*.service%20%E6%96%87%E4%BB%B6%EF%BC%9A%E5%AE%83%E4%BB%AC%E6%98%AF%E9%80%9A%E7%94%A8%E7%9A%84%E5%90%97%EF%BC%9F.png)
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 标头来启用/禁用守护进程。