Изменение пользователя в скрипте?

Я пытаюсь изменить пользователя, чтобы выполнить определенную команду во время запуска. Он терпит неудачу, и, видимо, пользовательский обмен не выполняется, поскольку я могу сказать, что команда не выполнена.

Что я делаю неправильно в моем ниже показанном initscript?

respawn console none start on startup stop on shutdown script su -u anotheruser -c "myCommand" >> "myLogfile.log" end script 

2 Solutions collect form web for “Изменение пользователя в скрипте?”

Я предполагаю, что вы используете последнюю версию ubuntu или дистрибутив, основанный на выскочке . Вы можете проверить /var/log/daemon.log наличие ошибок.

Стандартный su принимает синтаксис su [options] [username] . Заказчик man 1 su . Вы можете попробовать:

 su -c "myCommand" anotheruser >> "myLogfile.log" 

Кроме того, произошло несколько вещей (в основном нежелательных)

  1. myLogfile.log будет принадлежать root .
  2. myLogfile.log будет создан в / (корневой каталог), если вы не используете абсолютный путь, например, /tmp/myLogfile.log (потому что upstart работает с pwd, установленным в / ).

Если вы хотите, чтобы файл принадлежал anotheruser вы можете переключить эту команду.

 su -c "myCommand >> /tmp/myLogfile.log" anotheruser 

Это может вызвать проблемы, если у вас myLogfile.log принадлежащий root из более ранних запусков, или если вы не изменили myLogfile.log на что-то вроде /tmp/myLogfile.log (обычно обычные пользователи не могут создавать файлы в корневом каталоге dir / ).

Похоже, вы перепутали синтаксис su и sudo .

 su -c 'mycommand' anotheruser sudo -u anotheruser 'mycommand' 
  • Запретить запуск процессов автоматически
  • Создан скрипт CentOS - upstart, но он никогда не работает вообще
  • Linux: Почему init и systemd используют так много операций ввода-вывода?
  • Как отключить процесс демона на RHEL 6.3, как SMF на Solaris
  • Замена Upstart на Sysvinit in Wheezy приводит к ошибке
  • Upstart Logrotate?
  • Не удается заставить rc.local автоматически запускаться
  • Как сохранить выскочку установленной - всегда, не заменяйте sysvinit?
  • Документация Upstart для CentOS 6
  • Заблокирование всех stdout во время загрузки
  • Как запустить службу автоматически, когда запускается Ubuntu?
  • Linux и Unix - лучшая ОС в мире.