Linux 我们为什么要使用/etc/init.d/process start“;

Linux 我们为什么要使用/etc/init.d/process start“;,linux,shell,Linux,Shell,为什么在下面的程序中使用/etc/init.d/httpd start?为什么我们不能使用服务httpd start?对我来说,这是一项未经认可的服务。(我已经安装了httpd。) :-)维沙,我不是想让你失望。然而,如果没有很多假设,很难回答你的问题 不使用/etc/init.d/httpd start的一些注意事项 硬编码位置 假设httpd存储在文件/etc/init.d/httpd中,而不是apache2或nginx或其他文件 即使是ps-ef测试也假定进程名为httpd,有时不是

为什么在下面的程序中使用
/etc/init.d/httpd start
?为什么我们不能使用
服务httpd start
?对我来说,这是一项未经认可的服务。(我已经安装了httpd。)

:-)维沙,我不是想让你失望。然而,如果没有很多假设,很难回答你的问题

不使用
/etc/init.d/httpd start的一些注意事项
  • 硬编码位置
  • 假设httpd存储在文件/etc/init.d/httpd中,而不是apache2或nginx或其他文件
  • 即使是
    ps-ef
    测试也假定进程名为httpd,有时不是
不使用
服务httpd启动的一些注意事项
在这个脚本中不使用
服务httpd start
也有很好的理由,因为它可能有副作用。比如说,

  • 服务
    可能未将httpd注册为服务
  • 如果您使用
    服务
    ,您可能会重新启动您可能不想执行的其他相关服务
  • 服务
    可能会在启动过程中隐藏错误,您可能需要这样做

用httpd替换$service。很抱歉出错。您应该编辑您的问题以修复错误。您的问题不是真正可以回答的,因为我们不知道您在OPS中列出的脚本的上下文是什么。脚本的上下文是检查apache是否正在运行,如果没有启动它。Simpleer如果该脚本由
服务
本身使用,则
服务
不会调用自身,因为这只会再次调用此脚本,woopsies我们有一个无限循环:P。。。如果
服务
没有调用该行,则可以将该行替换为
服务httpd start
。这就是为什么我会问,脚本是在什么上下文中被调用的。剧本的意思已经很清楚了
#!/bin/bash
if (( $(ps -ef | grep httpd | wc -l) > 1 ))
then
   echo "httpd is running!!!"
else
   /etc/init.d/httpd start
fi