通常我们使用service dhcpd stop来停止dhcpd,但是cmdservice
只是一个脚本,因此它应该是由脚本执行的东西,以便dhcpd最终停止。例如,当我编写脚本时,当我输入 时service dhclient stop
,它会dhclient -r
在脚本内部执行。
那么谁能告诉我service dhcpd stop
到底要做什么来停止 dhcpd 服务呢?
答案1
如果您谈论的是 CentOS 6.x 或更早版本,则service dhcpd stop
运行sh /etc/init.d/dhcpd stop
,最终运行kill <PID of dhcpd>
。
如果是 CentOS 7.x,则service dhcpd stop
运行systemctl stop dhcpd
,这将告诉systemd
您执行实际的停止操作。
如果dhcpd.service
是本机 systemd 服务文件,则systemd
可能仅通过进行系统调用来进行查杀,kill(<PID of dhcpd>, 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
与您希望停止其 DHCP 服务的接口关联的进程即可。
为了使管理更容易,您可以编写自己的自定义.service
文件dhcpd
并将它们放入/etc/systemd/system
其中以启动/停止dhcpd
.然后,您可以根据您选择的文件命名方式使用“service dhcpd-ge1 start”等.service
。请参阅/lib/systemd/system/dhcpd.service
您的系统上的示例,并调整行中的命令行参数ExecStart=
以满足每个实例的需要。