我必须配置一个新的服务文件供 systemd 使用。我想知道我们是否可以将多个 taget 放在同一行中,after
如下例所示,或者我必须为每个运行级别创建一个服务
例子 :
[Unit]
Description=New service
After= runlevel2.target runlevel3.target runlevel4.target runlevel5.target
我不知道是否需要任何分隔符
旧服务有一个像这样的 chkconfig :
chkconfig: 2345 91 11
答案1
该chkconfig
行是 的参数update-rc.d
,它采用三个位置参数:启动的运行级别列表以及启动和停止优先级——因此这不是一个可以互换的列表。
Systemd 不使用运行级别,因此在转换为 systemd 服务时很难准确映射。幸运的是,几乎每个人都使用2345
or345
作为运行级别配置,并且存在这些的直接翻译:
默认配置中的运行级别 2-5 是多用户运行级别(即允许用户登录),因此这会转换为
multi-user.target
.在默认情况下运行级别 2 和 3 不同的发行版上,运行级别 3 启动 X 服务器,而运行级别 2 则不启动。如果你看到
345
,这很少见,那就转化为graphical.target
。
然后,目标将在行中引用WantedBy=
,例如WantedBy=multi-user.target
。