通常我们使用服务dhcpd stop来停止dhcpd,但是cmd service只是一个脚本,因此它应该是由脚本执行的东西,这样dhcpd最终就停止了。例如,当我编写脚本时,当我键入service dhclient stop时,它在脚本中执行dhclient -r。
那么,谁能告诉我service dhcpd stop到底做了什么来停止dhcpd服务呢?
发布于 2018-02-27 08:43:36
如果您谈论的是CentOS 6.x或更高版本,那么service dhcpd stop运行sh /etc/init.d/dhcpd stop,最后运行kill 。
如果是CentOS 7.x,那么service dhcpd stop运行systemctl stop dhcpd,这将告诉systemd执行实际的停止操作。
如果dhcpd.service是一个本机systemd服务文件,那么systemd将执行此操作,可能只需进行kill(, SIGTERM)系统调用,除非在服务文件中指定了一个特定的ExecStop=命令,或者它没有成功地停止属于systemd为该服务创建的控制组的所有进程。有关变体的更多细节和选项,请参见man systemd.kill。
如果它是为遗留的SysVinit启动/停止脚本自动生成的包装器,那么systemd将运行sh /etc/init.d/dhcpd stop,就像以前的CentOS版本一样。
您评论说您使用的是CentOS 7.3,因此涉及到systemd。
如果您将dhcpd配置为使用单个dhcpd实例服务多个网络接口,那么关闭dhcpd显然会同时结束所有接口上的DHCP服务。
如果您想启动多个dhcpd实例(每个接口一个),那么您只需终止与希望停止其dhcpd服务的接口关联的D18进程。
为了简化管理,您可以为.service编写自己的自定义dhcpd文件,并将它们放置到/etc/systemd/system中,以启动/停止dhcpd的每个多个实例。然后,您可以根据选择命名.service文件的方式使用‘servicdhcpd-ge1start’等。有关示例,请参阅系统上的/lib/systemd/system/dhcpd.service,并根据每个实例的需要调整ExecStart=行中的命令行参数。
https://unix.stackexchange.com/questions/426868
复制相似问题