我正在编写我的第一个 systemd 服务(在启动时运行)。
我很困惑在运行之前sudo systemctl daemon-reload
在目录中创建(未修改)新服务文件后是否需要运行/etc/systemd/system
sudo systemctl start ...
我在互联网上找到的一些创建服务的示例提到了systemctl daemon-reload
,有些则没有。
答案1
是否systemctl daemon-reload
需要取决于您的服务的行为方式。来自手册页系统控制(1),
守护进程重新加载
重新加载 systemd 管理器配置。这将重新运行所有生成器(请参阅 systemd.generator(7)),重新加载所有单元文件,并重新创建整个依赖关系树。
例如,假设您的服务存在依赖性或冲突。那么你就可以使用daemon-reload
.如果是简单的服务,可能不需要这个。
当您首次enable
使用服务时,系统管理器配置将重新加载。因此,如果您想使用 来测试您的服务,那么一旦您完成了您的服务start
就不需要了。daemon-reload
enable
同样,从 systemctl(1) 的手册页中,
启用 UNIT...、启用 PATH...
这将创建一组符号链接,如指定单元文件的 [Install] 部分中编码的那样。创建符号链接后,系统管理器配置将重新加载(以相当于守护程序重新加载的方式),以确保立即考虑更改。
如果您想要更改服务单元文件并重新测试,您可能需要daemon-reload
根据这些更改进行操作。无论如何,做 a 是可以的daemon-reload
,系统可能会在您start
提供服务时要求您这样做。