应该使用“invoke-rc.d”还是“service”来重新启动服务?

应该使用“invoke-rc.d”还是“service”来重新启动服务?

我很困惑哪个是最好的以及在什么情况下:

invoke-rc.d apache2 restart

或者

service apache2 restart

有真正的区别吗?

man service有以下有趣的一点:

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

我主要对 Debian 感兴趣,但也对 Mint(也基于 Debian)感兴趣。

答案1

官方 Debian有关守护进程的 Wiki 页面说使用service

# service ssh restart
Restarting OpenBSD Secure Shell server: sshd.

然而,在功能上service并且invoke-rc.d大部分是相同的:

  • invoke-rc.d根据命令的手册页,这是软件包维护者脚本的首选命令
  • service有一个独特的--status-all选项,可以查询所有可用守护进程的状态

看起来service是面向用户的命令,但也invoke-rc.d有其他用途。

答案2

问题可能是因为您的脚本在尝试 service 命令(将起作用)之前尝试使用 invoke-rc.d(这不起作用,因为 docker 容器中没有运行级别)。因此,更改脚本中的 if 条件,或者懒惰的方法是让它查找不存在的路径,以便它将使用 service 命令。例如:

if [ -x /xxxusr/sbin/invoke-rc.d ]; then /usr/sbin/invoke-rc.d $OMSAGENT_WS start elif [ -x /sbin/service ]; then /sbin/service $OMSAGENT_WS start

相关内容