insserv: warning: script 'XXX.sh' missing LSB tags and overrides

Я могу воспроизвести ваше поведение, если использую псевдоним fi :

$ alias fi=:
+ alias fi=:
$ . ./test
+ . ./test
++ set -x
bash: ./test: line 6: syntax error: unexpected end of file

Он работает, когда вы выполняете его, но не работает, когда вы его создаете, потому что псевдонимы недоступны в неинтерактивных оболочках (тип оболочки, запускающий сценарии оболочки). Как объясняется в руководстве bash :

Псевдонимы не раскрываются, когда оболочка не интерактивна, если только параметр оболочки expand_aliases не установлен с помощью shopt (см. The Shopt Builtin ).

Однако, когда вы источник что-то, он запускается в вашей текущей оболочке, которая, поскольку она интерактивна, уже загрузила псевдонимы, и поэтому псевдоним fi распознается и прерывается. поиск.

3
27.04.2016, 18:15
1 ответ

Извините за очень поздний ответ.

Сценарии инициализации не предназначены для постоянного выполнения. Под этим я подразумеваю, что сценарии инициализации должны запускать программу, а затем выходить, оставляя программу работающей в фоновом режиме. Таким образом, система инициализации узнает, что достигнут уровень выполнения.

Поэтому я бы рекомендовал положить ваш скрипт в отдельную папку, скажем /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
1
29.04.2021, 00:22

Теги

Похожие вопросы