系统依赖关系和启动顺序

我需要指定启动进程的启动顺序。 我有389目录服务器和Samba运行在Fedora 18上。我怎么能有networking​​服务启动,然后389 DS,然后桑巴? 在Fedora中有没有一个GUI来pipe理这个?

我已经启用了Samba开始与systemctl enable smb.service 。 我也用systemctl enable dirsrv.target启用了389 DS。

    您可以更新/usr/lib/systemd/sytem/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状态的好看法,但是仍然需要使用文本编辑器来修改单元文件。

    做两件事:

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

       After=syslog.target network.target nmb.service winbind.service 

      将其更改为:

       After=dirsrv.target syslog.target network.target nmb.service winbind.service 
    2. 把这个依赖关系报告给Fedora作为一个bug ,这样它就可以被合并到未来的版本中。

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

     Requires=dirsrv.target 

     After=dirsrv.target 

    有两种方法可以修改/usr/lib/systemd/system的服务文件(请参阅示例2.覆盖供应商设置 ):

    1. 将文件复制到/etc/systemd/system并对副本执行修改。 该文件将完全覆盖/usr/lib的文件。

    2. 创build文件/etc/systemd/system/smb.service.d/local.conf 。 该文件的内容应该像下面的例子。 这有select地覆盖供应商提供的服务文件中的“需要”和“之后”选项。

    这些(包括修改/usr/lib的文件)都有优点和缺点。 最好的select可能取决于服务和修改的性质。

    虽然它可能起作用,但只添加“After”选项是不够的(参见[Unit] Section Options )。 “后”控制顺序,但不依赖。 如果dirsrv.target没有以其他方式启动,指定一个命令将不会启动它。 使用“需要”或“想要”选项将强制启动dirsrv.target

     [Unit] Requires=dirsrv.target After=dirsrv.target 

    注:最初提出这个问题时,我不知道这个方法是否可用。