要重新启动服务(例如 httpd),我应该使用 /etc/init.d httpd restart 还是 /sbin/service httpd restart?

要重新启动服务(例如 httpd),我应该使用 /etc/init.d httpd restart 还是 /sbin/service httpd restart?

每当我需要在 RHEL VPS 上重新启动 Apache 时,我都会输入sudo /sbin/service httpd restart。但是我注意到很多文章建议使用sudo /etc/init.d httpd restart

有什么区别吗?如果有,我应该何时使用它们?

答案1

从手册页中:

服务在尽可能可预测的环境中运行 System V init 脚本,删除大多数环境变量并将当前工作目录设置为 /。

然后它调用init.d脚本。因此它们都完成了相同的事情,只不过通过调用脚本/sbin/service可以确保 shell 中的某些环境变量不会破坏脚本init.d

答案2

使用/sbin/service是件好事,因为它为守护进程提供了一个全新的工作环境,没有任何可能令人讨厌的环境变量妨碍并造成破坏。至少,这是在工作中需要它的理由;我一直直接在我的其他发行版机器上使用 init 脚本,它并没有造成明显的问题,但我确信确实存在一个正在/sbin/service解决的问题。也许 RHEL 系统在默认环境中有更多垃圾。

答案3

我的建议是,只要您实际登录到机器,就使用您想要的任何脚本,/etc/(init.d|rc.d)/daemon-name如果您正在编写脚本,则使用脚本,原因是后者通常更易于移植。如果我没记错的话,基本软件包安装中附带的唯一发行版/sbin/service是 RH 风格的,即 RHEL、CentOS、Fedora。例如,我的 Debian 系统没有这个脚本,但这对您的环境来说可能无关紧要。

相关内容