默认情况下,Debian 9 systemd是默认的。但是我仍然在/etc/init.d目录下看到了很多东西。这是否意味着我还能把东西放在那里开始呢?将首先执行哪个目录(systemd或init.d)?
发布于 2019-05-21 20:56:21
当systemd启动或systemctl daemon-reload运行时,systemd运行一个systemd-sysv-generator程序,该程序将生成一个/etc/init.d脚本列表,并为它们生成相应的.service单元,除非系统原生.service单元已经存在。
生成器将解释init.d脚本中的任何LSB头块。它们看起来是这样的:
### BEGIN INIT INFO
# Provides: apache2
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Apache2 web server
# Description: Start the web server
# This script will start the apache2 web server.
### END INIT INFO任何描述的依赖项(此处为$local_fs $remote_fs $network $syslog $named)都将被转换为相应的系统依赖项。由于init.d脚本和systemd服务之间并不总是存在简单的一对一映射,所以生成器将一些LSB依赖项(如$remote_fs、$network、$named、$portmap和$time )专门映射到相应的systemd .target单元中。
自动生成的包装器服务只需运行相应的init.d脚本即可。一旦依赖关系允许,所有包装脚本都会被命令在systemd basic.target之后运行。这使得LSB头非常重要:如果您依赖于生成器机制,并且依赖项列表不完整,那么systemd很可能会在init.d脚本所依赖的东西准备就绪之前,过早地尝试运行它。
还可能有些打包服务只有一个init.d脚本,但是有两个或更多的systemd服务文件(比如NFS服务)。在这种情况下,包将不依赖于生成器,而是同时提供init.d脚本和服务文件--名称不重叠。该包还将在/lib/systemd/system/.service提供一个指向/dev/null的符号链接。这使得systemd将从init脚本自动生成的服务视为永久屏蔽,而本机单元文件将处理服务流程(Es)。
https://unix.stackexchange.com/questions/520246
复制相似问题