Скрипт Upstart, который выводит ошибки на консоль?

Скрипт Upstart, который выводит ошибки на консоль?

У меня есть простой скрипт upstart, который запускает процесс и возрождает его, если он падает. Проблема в том, что если он падает, я хочу, чтобы пользователь был предупрежден об этом (потому что ему может потребоваться предпринять какие-то действия, чтобы предотвратить его повторный падение). Вот мой скрипт:

start on runlevel [2345]
stop on runlevel [016]

chdir /opt

respawn
respawn limit 5 10

exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js 2>&1 > /var/log/gulp.log

Не то чтобы я перенаправляю стандартную ошибку в консоль (2>&1) и стандартно вывожу файл журнала. Перенаправление файла журнала РАБОТАЕТ. Но стандартная ошибка в консоль НЕ РАБОТАЕТ. Это перенаправление ошибокделаетработает, если я запускаю команду непосредственно из оболочки.

Что я пробовал на данный момент: - Добавление «консольного вывода» в скрипт (который предположительно перенаправляет вывод в /dev/console) - Использование команды exec start-stop-daemon --start -c myuser --exec (думая, что поскольку я запускаю задание upstart с помощью sudo, /dev/console указывает куда-то еще) **этот скрипт просто вылетает и даже не запускается

Есть еще идеи? Мне очень нужно, чтобы вывод ошибок был выведен в консоль для пользователя.

решение1

Опустите 2>&1- это фактически перенаправляет stderr в stdout. Вы хотите, чтобы stderr перешел в консоль - что является значением по умолчанию для stderr.

exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js > /var/log/gulp.log

Связанный контент