У меня есть сервис для запуска bluepill (Ruby gem для мониторинга процессов). Конфигурация выскочки ниже.
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill
Я хочу, чтобы bluepill запускался с правами root.
Все выскочки конфигурации запускаются с правами root, когда машина загружается, верно? Таким образом, в строке upstart config exec
не требуется sudo
.
Приведенный выше скрипт работает просто отлично, и bluepill запускается при загрузке системы. Но если я удалю sudo
в строке exec
, bluepill не запустится при загрузке системы. Глядя на журнал, кажется, что bluepill запускается как непривилегированный пользователь и, таким образом, терпит неудачу.
Кто-нибудь может объяснить, почему?
Я не хочу, чтобы sudo
использовался, потому что, когда я даю respawn
, выскочка отслеживает PID процесса sudo
, а не PID фактический процесс bluepill.
sudo: извините, у вас должен быть tty для запуска sudo
blockquote>Судо предназначен для использования в интерактивном режиме. См. Как мне использовать sudo из сценария upstart? для подробностей.
Вы должны пересмотреть свой дизайн. Будет гораздо лучше создать выделенного системного пользователя, который будет запускать процесс работы и применять необходимые разрешения. В вашей конфигурации работы вам нужно добавить setuid и, возможно, setgid stanzas.
description "Start up the bluepill service" start on runlevel [2] stop on runlevel [016] setuid bluepill setgid bluepill exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill
bluepill добавляется назначенным пользователем системы. Подробнее см. adduser .
sudo adduser --system --group --no-create-home bluepill
На основании билетов, упомянутых в комментарии, добавляется
expect daemon
строфа. При запуске bluepill процесс запускается как демон, например там будет две вилки. Безexpect daemon
раздел Upstart не может правильно отслеживать PID. Как сказано в записи , ожидайте строфу Эта строфа чрезвычайно важна .