我需要指定启动顺序以启动进程。我在Fedora 18上运行389 Directory Server和Samba。如何启动网络服务,然后启动389 DS,然后启动Samba?在Fedora中是否有GUI可以对此进行管理?
我已启用Samba以开始systemctl enable smb.service
。我还通过启用了389 DS systemctl enable dirsrv.target
。
我需要指定启动顺序以启动进程。我在Fedora 18上运行389 Directory Server和Samba。如何启动网络服务,然后启动389 DS,然后启动Samba?在Fedora中是否有GUI可以对此进行管理?
我已启用Samba以开始systemctl enable smb.service
。我还通过启用了389 DS systemctl enable dirsrv.target
。
Answers:
使用systemctl edit smb.service
更新的依赖关系。
After=dirsrv.target
-将确保在dirsrv.target之后启动smb.service。
为了增强鲁棒性(如果您需要修改这些内容,这将是值得的),您可能还希望包括以下内容:
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的状态,但是您仍然必须使用文本编辑器来修改单元文件。
/usr/lib/systemd
除非您是发行版维护者,否则不要编辑单位文件的版本,否则在每次软件包更新时都会被覆盖。将单元文件复制到中/etc/systemd
然后进行编辑,或者使用一个嵌入式文件(有关详细信息,请参见systemd.unit(5))。甚至更容易,只需使用systemctl edit smb.service
自动执行插入文件魔术的功能即可!
做两件事:
编辑/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
将此依赖项作为bug报告给Fedora,以便可以将其合并到将来的发行版中。
unit
文件后,通常应运行systemctl daemon-reload
在中修改服务文件有两种选择/usr/lib/systemd/system
(请参见示例2。覆盖供应商设置):
将文件复制到/etc/systemd/system
副本上并对其进行修改。该文件将完全覆盖中的文件
/usr/lib
。
创建文件/etc/systemd/system/smb.service.d/local.conf
。该文件的内容应类似于以下示例。这有选择地覆盖了供应商提供的服务文件中的“ Requires”和“ After”选项。
每一个(包括在 /usr/lib
)优点和缺点。最佳选择可能取决于服务和修改的性质。
尽管可能可行,但仅添加“ After”选项是不够的(请参阅[Unit]部分选项)。“之后”控制顺序,但不控制依赖关系。如果dirsrv.target
未以其他方式启动,则指定订单不会启动它。使用“ Requires”或“ Wants”选项将被强制dirsrv.target
启动。
[Unit]
Requires=dirsrv.target
After=dirsrv.target
注意:最初问这个问题时,我不知道这种方法是否可用。