我制作了一个带有服务的 *.deb:
[Unit]
Description=Hello example service
Wants=nginx
[Service]
Type=simple
ExecStart=/usr/local/bin/hello
TimeoutStopSec=15
Restart=always
postinst
脚本(如果使用,除了在安装过程中出现一些错误外,不会影响任何东西:)update-rc.d: error: initscript does not exist: /etc/init.d/hello
:
update-rc.d hello defaults
invoke-rc.d nginx reload
prerm
它的 debian 脚本是:
invoke-rc.d hello stop
此脚本不会停止服务。即使手动启动它也不起作用。每次返回 102。
systemctl stop
适合我的服务。
以某种invoke-rc.d
方式适用于网络服务器:
sudo invoke-rc.d nginx stop
到底是怎么回事?
该
invoke-rc.d
命令用于 sysv init 脚本(如其联机帮助页所述),而不是 Upstart 或 systemd。Nginx 仍然有一个 sysv init 脚本(init.d
在filelist中查找),这可能就是为什么invoke-rc.d
适用于它(或者看起来,无论如何)。尽管 Debian 指南使用
invoke-rc.d
,但在 Ubuntu 上,更喜欢使用service
命令。它是一个包装脚本,可以处理 sysv init、Upstart 和 systemd 文件。systemd 文档也推荐使用
service
:当然,对于 Ubuntu,
service
位于/usr/sbin/service
.