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

如果以后决定编辑mine.service,是否必须告诉systemd mine.service已更改?如果是这样,我该怎么办?

#1 楼

对单位文件进行更改后,应按此处概述的那样运行systemctl daemon-reload


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


然后您可以使用
重新启动(或重新加载)服务
systemctl restart your-service-name


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

评论


我发现我还需要运行systemctl restart才能真正重启服务本身。

– hwjp
16-10-4在20:52

以防万一,守护程序重新加载不是通用的,必须为用户服务运行systemctl --user守护程序重新加载。

– Alec Mev
18年1月25日在22:06

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

–rogerdpack
19年5月9日在17:22

我没有systemctl ...

–傻瓜
20-10-30在6:57

如果您没有systemctl,那么也许您使用的不是SystemD。

– GregL
20-10-30在11:05

#2 楼

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

评论


这对我有用!没明白为什么systemctl没有重新加载服务文件。

–antonagestam
18/09/21在15:12