Systemd 依赖项和引导顺序

Dyl*_*ens 21 linux fedora systemd

我需要为要启动的进程指定引导顺序。我有 389 Directory Server 和 Samba 在 Fedora 18 上运行。我怎样才能启动网络服务,然后是 389 DS,然后是 Samba?Fedora 中是否有 GUI 来管理它?

我已启用 Samba 以systemctl enable smb.service. 我还启用了 389 DS systemctl enable dirsrv.target

Guy*_*emi 31

使用systemctl edit smb.service更新的依赖关系。

After=dirsrv.target - 将确保 smb.service 在 dirsrv.target 之后启动。

为了健壮性,(如果您正在修补这些东西,这将是值得的)您可能还希望包括以下一些内容:

Requires=dirsrv.target- 激活 smb.service 时激活 dirsrv.target。如果 dirsrv.target 失败,将导致 smb.service 失败。

Wants=dirsrv.target- 激活 smb.service 时激活 dirsrv.target。如果 dirsrv.target 失败,不会导致 smb.service 失败。

BindsTo=dirsrv.target - 如果 dirsrv.target 已停用,请停用 smb.service。

来源:http : //www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-ui为 systemd 提供 GUI。可以很好地了解 systemd 的状态,但您仍然需要使用文本编辑器来修改单元文件。

  • 感谢您编辑答案!它解决了问题,我已转换为赞成票。:-) (3认同)
  • 投反对票,因为这建议了不好的做法。不要编辑单元文件的`/usr/lib/systemd` 版本,除非你是发行版维护者或者你喜欢在每次软件包更新时覆盖你的文件。要么将单元文件复制到 `/etc/systemd` 中,然后进行编辑,或者使用插入文件(有关详细信息,请参阅 systemd.unit(5))。更简单,只需使用“systemctl edit smb.service”,它会自动执行插入文件的魔术! (2认同)

Mic*_*ton 12

做两件事:

  1. 编辑/lib/systemd/system/smb.service单元文件,指定依赖项。该[unit]部分包含After=一行,指定在此之前应达到哪些服务/目标。

    After=syslog.target network.target nmb.service winbind.service
    
    Run Code Online (Sandbox Code Playgroud)

    将其更改为:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将此依赖项作为 bug 报告给 Fedora,以便可以将其合并到未来的版本中。

  • 修改`unit`文件后,通常应该运行`systemctl daemon-reload` (6认同)

小智 5

您可能需要更改或Requires在文件[Unit] 的部分中包含带有指令的行/usr/lib/systemd/system/smb.service

Requires=dirsrv.target
Run Code Online (Sandbox Code Playgroud)

After=dirsrv.target
Run Code Online (Sandbox Code Playgroud)