Неожиданное прерывание в файле запуска Ubuntu

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

Следующие два файла в основном одинаковы, за исключением процесса поиска. Процесс инициализации в первом файле всегда находится, и в результате несколько повторений "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 

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

  1. Как это случилось? Получал ли выскочка результат pgrep как исключение?
  2. Как я могу исправить эту проблему?
  3. Почему будет несколько повторений вывода вместо одного? Добыча не растет бесконечно и не выглядит как нерест.

1 ответ

Решение

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

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