通常我们使用 service dhcpd stop 来停止 dhcpd,但 cmdservice
只是一个脚本,因此它应该是脚本执行的东西,以便 dhcpd 最终停止。例如,当我编写脚本时,当我输入 时service dhclient stop
,它会dhclient -r
在脚本内部执行。
那么谁能告诉我service dhcpd stop
停止dhcpd服务实际上做了什么?
通常我们使用 service dhcpd stop 来停止 dhcpd,但 cmdservice
只是一个脚本,因此它应该是脚本执行的东西,以便 dhcpd 最终停止。例如,当我编写脚本时,当我输入 时service dhclient stop
,它会dhclient -r
在脚本内部执行。
那么谁能告诉我service dhcpd stop
停止dhcpd服务实际上做了什么?
如果您谈论的是 CentOS 6.x 或更早版本,则为
service dhcpd stop
runssh /etc/init.d/dhcpd stop
,最终为 runningkill <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
文件命名方式使用''service dhcpd-ge1 start''等。请参阅/lib/systemd/system/dhcpd.service
您的系统上的示例,并调整该行中的命令行参数ExecStart=
以满足您对每个实例的需求。