insserv:警告:脚本“XXX.sh”缺少 LSB 标签和覆盖

insserv:警告:脚本“XXX.sh”缺少 LSB 标签和覆盖

是什么原因导致 insserv: warning: script 'XXX.sh'缺少 LSB 标签和覆盖,以及如何防止它?

pi@raspberrypi /etc/init.d $ sudo rm 5_*
pi@raspberrypi /etc/init.d $ sudo vi /etc/init.d/5_second_cron
pi@raspberrypi /etc/init.d $ sudo chmod +x /etc/init.d/5_second_cron
pi@raspberrypi /etc/init.d $ sudo update-rc.d /etc/init.d/5_second_cron defaults^C
pi@raspberrypi /etc/init.d $

5_second_cron.sh如下:

#!/bin/bash
while true
do
 /usr/bin/php /var/www/cron.php
 sleep 5
done

编辑。尝试了以下方法。当我执行时,脚本只是“挂起” $ sudo update-rc.d /etc/init.d/5_second_cron

pi@raspberrypi /etc/init.d $ sudo vi /etc/init.d/5_second_cron
pi@raspberrypi /etc/init.d $ sudo chmod +x /etc/init.d/5_second_cron
pi@raspberrypi /etc/init.d $ sudo update-rc.d /etc/init.d/5_second_cron defaults^.C
pi@raspberrypi /etc/init.d $

5_second_cron 如下:

#!/bin/bash
# /etc/init.d/5_second_cron

### BEGIN INIT INFO
# Provides:          5_second_cron
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: PHP Loop
# Description:       Initiate a given PHP file every 5 seconds
### END INIT INFO

while true
do
 /usr/bin/php /var/www/cron.php
 sleep 5
done
exit 0

编辑2。又乱搞了一些,现在是这样的:

pi@raspberrypi /etc/init.d $ sudo update-rc.d /etc/init.d/5_second_cron defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d//etc/init.d/5_second_cron

答案1

很抱歉这么晚才回答。

初始化脚本并不意味着持续运行。我的意思是初始化脚本应该启动程序,然后退出,让程序在后台运行。这样,init 系统就知道已达到运行级别。

因此,我建议将您的脚本放入一个单独的文件夹中,例如/usr/bin.这就是它包含的内容:

#!/bin/sh

while true
do
 /usr/bin/php /var/www/cron.php
 sleep 5
done

在您的初始化脚本中,输入以下内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          5_second_cron
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: PHP Loop
# Description:       Initiate a given PHP file every 5 seconds
### END INIT INFO

case "$1" in
start)
    setsid /path/to/your/script.sh >/dev/null 2>&1 < /dev/null &
    ;;
*)
    ;;
esac

这使得脚本接受参数start(这是它的调用方式),并且还将实际脚本作为后台守护进程从进程中分离出来。

完成这些编辑后,只需运行:

$ sudo insserv 5_second_cron

相关内容