Ubuntu 哪种情况可能发生调用rc.d将失败,但服务赢了';T
我正在为我的应用服务器开发二进制debian包。因此,我需要为它开发postinst和prerm脚本。在prerm中安装新软件包之前,我应该停止服务。我发现我不能使用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 当我想安
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不执行/etc/init.d/myservice stop
),并尝试使用一些shell调试参数运行它(例如,bash的-x
选项:bash-x/etc/init.d/myservice stop
)