Я использую последнюю версию upstart для Ubuntu 10.4 LTS. upstart запускается с флагом ядра --debug.
Я делаю пользовательскую конфигурацию заданий для демона nzbget. По сути, у этого задания есть сценарий предварительного запуска, который монтирует файловую систему, сценарий пост-запуска, который монтирует файловую систему и exec nzbget -D
строку.
Проблема в том, что демон nzbget должен работать как непривилегированный пользователь. Эта функция уже включена в nzbget. Действительно, когда я запускаю из консоли, sudo nzbget -D
процесс запускается как непривилегированный пользователь. Но когда я запускаю задание upstart со exec nzbget -D
строки, процесс nzbget -D запускается от имени пользователя root. Как говорилось в готовой кулинарной книге, я пытался использовать пользователя su -c "nzbget -D", а также start-stop-daemon без ожидаемого строфа, как было рекомендовано. Но для обеих команд, поскольку upstart отслеживает неправильный PID, я думаю, он видит основной процесс как завершенный (из-за журналов upstart) в конце процесса запуска и, таким образом, запускает сценарий пост-процесса, который мне не нужен.
=> Как я могу сделать это правильно? Как exec nzbget -D
команда upstart запускает процесс от имени пользователя root, а sudo nzbget -D
команда запускает его как непривилегированный пользователь?
Я предлагаю использовать sudo со следующим синтаксисом:
это запускает команду foocommand от имени пользователя foouser.
источник