我创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
扩展名。