我很困惑哪个是最好的以及在什么情况下:
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