update-rc.d disable / remove不会删除etc / init.d / rc *参考

我创build了一个使用Debian init.d骨架的守护进程,该骨架成功地作为服务运行。 我也用过:

sudo update-rc.d /etc/init.d/pirservice.sh defaults 

让守护进程在启动时运行,并在发出closures命令时closures。

不过,我已经尝试使用以下命令删除启动服务的启动:

 sudo update-rc.d /etc/init.d/pirservice.sh remove 

在检查完成使用:

 ls -l /etc/rc?.d/*pirservice.sh 

这些脚本仍然链接在所有6个rc?.d文件夹中,并且在启动时仍然可以加载

当我尝试使用以下内容:

 sudo update-rc.d /etc/init.d/pirservice.sh disable 

我得到以下错误:

 update-rc.d: using dependency based boot sequencing update-rc.d: error: cannot find a LSB script for /etc/init.d/pirservice.sh 

我的脚本如下:

 #!/bin/sh # /etc/init.d/pirservice.sh ### BEGIN INIT INFO # Provides: myservice # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Put a short description of the service here # Description: Put a long description of the service here ### END INIT INFO # Change the next 3 lines to suit where you install your script and what you want to call it DIR=/usr/local/bin/myservice DAEMON=$DIR/pir.py DAEMON_NAME=pir # This next line determines what user the script runs as. # Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python. DAEMON_USER=root # The process ID of the script when it runs is stored here: PIDFILE=/var/run/$DAEMON_NAME.pid . /lib/lsb/init-functions do_start () { log_daemon_msg "Starting system $DAEMON_NAME daemon" start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --startas $DAEMON log_end_msg $? } do_stop () { log_daemon_msg "Stopping system $DAEMON_NAME daemon" start-stop-daemon --stop --pidfile $PIDFILE --retry 10 log_end_msg $? } case "$1" in start|stop) do_${1} ;; log_end_msg $? } do_stop () { log_daemon_msg "Stopping system $DAEMON_NAME daemon" start-stop-daemon --stop --pidfile $PIDFILE --retry 10 log_end_msg $? } case "$1" in start|stop) do_${1} ;; restart|reload|force-reload) do_stop do_start ;; status) status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $? ;; *) echo "Usage: /etc/init.d/$DEAMON_NAME {start|stop|restart|status}" exit 1 ;; esac exit 0 

任何人可以提供任何指导?

好。 我看不到任何明显的错误与初始化脚本。 所以我强制删除如下:

 sudo update-rc.d -f /etc/init.d/pirservice.sh remove 

如果有人能弄清楚为什么我有LSB错误,我会感激。

手册页说

update-rc.d [-n] [-f] 名称删除

update-rc.d更新System V风格的初始化脚本链接/etc/rcrunlevel.d/NN*name*,其目标是脚本/etc/init.d/ 名称

所以你应该使用

update-rc.d pirservice.sh禁用

代替。 对于好的样式,你应该在INIT INFO块中更新信息。 另外,你可以删除一个更好的名字的.sh扩展名。