我需要指定启动进程的启动顺序。 我有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状态的好看法,但是仍然需要使用文本编辑器来修改单元文件。
做两件事:
编辑/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
把这个依赖关系报告给Fedora作为一个bug ,这样它就可以被合并到未来的版本中。
您可能需要在/usr/lib/systemd/system/smb.service文件的[Unit]部分中更改或包含一行与Requires指令。
Requires=dirsrv.target
和
After=dirsrv.target
有两种方法可以修改/usr/lib/systemd/system的服务文件(请参阅示例2.覆盖供应商设置 ):
将文件复制到/etc/systemd/system并对副本执行修改。 该文件将完全覆盖/usr/lib的文件。
创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
注:最初提出这个问题时,我不知道这个方法是否可用。