Intereting Posts
Как прочитать содержимое файла на удаленном сервере, который находится на локальном сервере в Unix? как использовать декодер nvidia vdpau для проигрывателя mplayer в Linux? Является ли highmem актуальным в 64-разрядной Linux? Если нет, то почему? Как читать несколько строк вместо строк Как включить синхронизацию NTP при загрузке на debian wheezy Как использовать '(' токен при его использовании для поиска с помощью ag / awk? Эффективный способ сравнения в awk Как определить, какие файлы были созданы приложением? Какой лучший способ получить GNOME 2 в Arch Linux? Как я могу динамически переключать выходной пункт сценария или команды? лучший способ поиска истории моей оболочки Как ls с globbing для скрытых файлов? Есть ли способ активировать конкретную вкладку хром через bash? Как я могу работать с инструментами GUI через удаленный сервер? Ошибка apt-get: не удалось найти драйвер метода / usr / lib / apt / methods / https

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

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

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

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

Я предполагаю, что вы используете последнюю версию 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'