У меня есть скрипт выскочки, подобный так:
start on runlevel [2345]
respawn
script
exec su - ubuntu -c "cd /opt/app; bin/widget 2>&1 | logger -t 'widget'"
end script
Проблема в том, что когда происходит сбой процесса виджета, он не возрождается. Предположительно, потому что процесс регистрации все еще работает. Есть ли способ обойти это?
Я бы "передал" работу на скрипт bash:
start on runlevel [2345]
respawn
script
exec /path/to/bash/script
end script
скрипт
#! /bin/bash -e
su - ubuntu -c "cd /opt/app; bin/widget" |& logger -t 'widget'
exit ${PIPESTATUS[0]}
Массив PIPESTATUS
в bash хранит возвращаемые значения канала, в этом случае мы используем возвращаемое значение команды su
.