启动时,重新启动 apache 服务器是否有以下命令之间的区别?
sudo service apache2 restart
sudo service apache2 stop
sudo service apache2 start
和
sudo systemctl restart apache2
sudo systemctl stop apache2
sudo systemctl start apache2
我只是通过玩 LAMP 堆栈来了解一些关于 Linux 服务器的知识,但我想知道为什么某些指南使用一种语法而其他指南使用另一种语法。
使用我的示例文件,
/etc/init.d
该文件用于 rlm 许可证管理器,该文件中的相关代码与启动、停止、重新启动和状态相关:如您所见,
restart
它只是一个调用 stop 然后 start 的函数调用。所以这就是全部restart
,只不过是调用停止然后开始。init.d 或 systemctl 文件实际上是否可以将重新定义定义为与我的示例不同并且涉及更多? 是的,您必须亲自查看代码才能真正了解。但很可能它们都与我在上面发布的内容非常相似,包括你的 apache 文件,关于 start | 停止 | 重启 | 地位。
在您的问题的上下文中,如果您想停止并启动您的 apache2 服务,那么与
service apache2 restart
手动执行两个单独的命令首先停止然后启动相比,完成该任务所需的最少输入量。但无论哪种方式,你都会完成同样的事情。还要认识到,如果您这样做了,restart
那么服务将在停止后立即尝试启动,无论停止是否成功;这可能是好是坏取决于您正在做什么或调试。有时,service whatever stop
在手动发出后续的service whatever start
.init.d是围绕语法结构工作的旧 linux 方式
service
,现在被systemd linux 和systemctl
语法结构所取代。但是service whatever <start|stop|restart|status
仍然受支持并将别名为systemctl <start|stop|restart|status whatever
. 所以在现代 systemd linux 系统上使用service
vs没有区别。systemctl
如果您尝试systemctl
在旧的 init.d 类型的 linux 系统上使用,例如 redhat5,由于显而易见的原因,它只会是 command not found [希望如此]。您可以阅读解释 initd 与 systemd 的网络文章。service whatever <start|stop|status|restart>
在文档中使用语法以及在命令行中键入它仍然是完全有效和正确的。对于文档和指南,它以最少的字符量表达了要点,并且由于它几乎直接别名为 systemctl (它们是服务),在我看来,继续在任何文档中使用旧的initd服务语法更具可读性.