Неожиданное прерывание в Ubuntu starup файл

Я получил проблему с новомодными файлами Ubuntu в/etc/init/. Я пытаюсь выполнить процесс, если он уже не существует. Таким образом, я записал conf файл, и запустите с "запуска"

Следующие два файла - главным образом то же за исключением искавшего процесса. Процесс init в первом файле всегда находится, и несколько повторений "1 2 4" производятся в $TMPFILE в результате.

start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]
respawn
script
TMPFILE=/var/log/tmp.log
echo 1 >> $TMPFILE
PID=$(pgrep -f "init" -o) 
echo 2 >> $TMPFILE
if [ -z $PID ] ; then
    echo 3 >> $TMPFILE
fi
echo 4 >> $TMPFILE
end script 

Для второго файла doesnotexist не найден pgrep. Однако только повторения "1" производятся в $TMPFILE. Я также пытался выполнить часть сценария отдельно, и это производит "1 2 3 4" столь же ожидаемый.

start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]
respawn
script
TMPFILE=/var/log/tmp.log
echo 1 >> $TMPFILE
PID=$(pgrep -f "doesnotexist" -o) 
echo 2 >> $TMPFILE
if [ -z $PID ] ; then
    echo 3 >> $TMPFILE
fi
echo 4 >> $TMPFILE
end script 
  1. Как это происходило? Выскочка получала результат pgrep как исключение?
  2. Как я могу устранить эту проблему?
  3. Почему там были бы несколько повторений вывода вместо одного? Вывод не растет неограниченно долго и не походит на перепорождение.
0
задан 30 September 2014 в 22:34

1 ответ

Проблема состоит в том, что разделы сценария в выскочке выполняются с набором-e флаг. Это означает оболочку с выходом если любые ошибки команды (как pgrep). Решение состоит в том, чтобы добавить || true после команды pgrep.

0
ответ дан 7 October 2019 в 00:44

Другие вопросы по тегам:

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