每当我需要在RHEL VPS上重新启动Apache时,inputsudo /sbin/service httpd restart 。 不过,我注意到很多文章build议使用sudo /etc/init.d httpd restart 。
有什么区别吗? 如果有的话,我什么时候可以使用每一个?
从手册页:
服务在尽可能可预测的环境中运行System V初始化脚本,删除大多数环境variables并将当前工作目录设置为/。
然后它调用init.d脚本。 所以他们都完成同样的事情,除了通过/sbin/service调用脚本只是确保shell中的一些环境variables不会搞砸init.d脚本。
使用/sbin/service是很好的,因为它为守护进程提供了一个全新的工作环境,没有任何潜在的恼人的环境variables妨碍和破坏。 至less,这是要求工作的理由; 我一直使用init脚本直接在我的other-distro机器上,并没有造成明显的问题,但我确信有一个真正的问题,即/sbin/service正在解决。 也许RHEL系统在默认的环境中有更多的废话。
我的build议是使用任何你想要的东西,只要你真的login到机器上,并且使用/etc/(init.d|rc.d)/daemon-name如果你是脚本的,原因是后者通常更便携。 IIRC,在基本软件包安装中的/sbin/service中唯一的发行版是RH-flavored,即RHEL,CentOS,Fedora。 我的Debian系统,例如没有这个脚本,但这可能无关紧要你的环境。