修改后,是否必须重新加载systemd单位文件?


138

假设我写了一个mine.service文件。然后我用systemctl enable mine.service

如果我以后决定编辑mine.service,我必须告诉systemdmine.service被改变?如果是这样,我该怎么做?

Answers:


168

对单位文件进行更改后,应按此处systemctl daemon-reload所述运行。

daemon-reload重新
加载systemd管理器配置。这将重新运行所有生成器(请参见systemd.generator(7)),重新加载所有单元文件,并重新创建整个依赖关系树。在重新加载守护程序时,代表用户配置的所有systemd监听的套接字都将保持可访问状态。

然后,您可以根据需要重新启动(或重新加载)服务

systemctl restart your-service-name

(daemon-reload不会自己重新加载/重新启动服务,只是让systemd知道新的配置)


2
我发现我还需要运行a systemctl restart才能真正重新启动服务本身……
hwjp

3
以防万一,daemon-reload这不是普遍的,必须运行systemctl --user daemon-reload用户服务。
Olegs Jeremejevs

注意,在重新运行生成器之前,它还“删除了生成器创建的先前配置”:freedesktop.org/software/systemd/man/systemd.generator.html
rogerdpack

8

作为上述答案的补充:如果您更改了[Install]指令中的某些内容,则可能需要运行sudo systemctl reenable YOURUNITFILE以便在.target目录中重新创建符号链接。


这对我有用!没明白为什么systemctl没有重新加载服务文件。
antonagestam '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.