
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スクリプトがプログラムを起動してから終了し、プログラムがバックグラウンドで実行されるようにする必要があるということです。このようにして、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