每当我需要在 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 系统没有这个脚本,但这对您的环境来说可能无关紧要。