Ubuntu 哪种情况可能发生调用rc.d将失败,但服务赢了';T

Ubuntu 哪种情况可能发生调用rc.d将失败,但服务赢了';T,ubuntu,service,debian,deb,Ubuntu,Service,Debian,Deb,我正在为我的应用服务器开发二进制debian包。因此,我需要为它开发postinst和prerm脚本。在prerm中安装新软件包之前,我应该停止服务。我发现我不能使用 service myservice stop 在prerm中,我应该使用invoke rc.d,而不是如下所示 invoke-rc.d myservice stop 此commond始终因以下原因而失败: Invoke-rc.d: initscript myservice, action "stop" failed 当我想安

我正在为我的应用服务器开发二进制debian包。因此,我需要为它开发postinst和prerm脚本。在prerm中安装新软件包之前,我应该停止服务。我发现我不能使用

service myservice stop
在prerm中,我应该使用invoke rc.d,而不是如下所示

invoke-rc.d myservice stop
此commond始终因以下原因而失败:

Invoke-rc.d: initscript myservice, action "stop" failed
当我想安装deb包时。我也通过start测试了它,我在start操作中得到了相同的错误

奇怪的是,当我使用sudo service myservice start/stop时,服务(
myservice
)工作正常,没有任何问题或故障


有人能解释为什么
invoke rc.d
命令不起作用,而
service
命令起作用吗?

很难说没有关于脚本性质的任何信息,但是在
invoke rc.d
service
下运行的主要区别在于

  • invoke rc.d
    在给定当前运行级别和任何系统initscript策略(
    /usr/sbin/policy rc.d
    )的情况下,尝试检查服务是否应该运行,而
    服务
    只执行您告诉它的操作;及
  • 服务
    清除大多数环境变量,并将工作目录设置为/,以使执行环境尽可能可再现/可预测<代码>调用rc.d不执行

  • 因此,您可能应该了解当前环境、工作目录或运行级别对initscript的影响。尝试直接运行它(
    /etc/init.d/myservice stop
    ),并尝试使用一些shell调试参数运行它(例如,bash的
    -x
    选项:
    bash-x/etc/init.d/myservice stop
    )。

    如果没有关于脚本性质的任何信息,很难说,但是在
    invoke rc.d
    service
    下运行的主要区别在于

  • invoke rc.d
    在给定当前运行级别和任何系统initscript策略(
    /usr/sbin/policy rc.d
    )的情况下,尝试检查服务是否应该运行,而
    服务
    只执行您告诉它的操作;及
  • 服务
    清除大多数环境变量,并将工作目录设置为/,以使执行环境尽可能可再现/可预测<代码>调用rc.d不执行
  • 因此,您可能应该了解当前环境、工作目录或运行级别对initscript的影响。尝试直接运行它(
    /etc/init.d/myservice stop
    ),并尝试使用一些shell调试参数运行它(例如,bash的
    -x
    选项:
    bash-x/etc/init.d/myservice stop