修改时是否必须重新加载 systemd 单元文件?

425*_*esp 210 systemd

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

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

Gre*_*egL 256

当您更改您的单位的文件,你应该运行systemctl daemon-reload,所概述这里

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

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

systemctl restart your-service-name
Run Code Online (Sandbox Code Playgroud)

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

  • 以防万一,`daemon-reload` 不是通用的,必须为用户服务运行 `systemctl --user daemon-reload`。 (12认同)
  • 我发现我还需要运行一个 `systemctl restart` 来实际重启服务本身...... (3认同)
  • 有点语法抱怨,但应该!=必须。必须是这样,这感觉很蹩脚,因为 systemctl 足够聪明,可以告诉您需要重新加载它,但不会重新加载自身。 (2认同)

小智 27

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