как использовать & для sudo

Я знаю, если я положил & в конце приложения на терминал, он будет работать в фоновом режиме, и терминал все равно может получать команды, например:

 howchen@host:~ -> cutecom& [1] 17269 howchen@host:~ 

он может cutecom приложением cutecom . Однако мне нужно запустить это приложение с помощью root, я не могу ввести его как:

 howchen@host:~ -> su cutecom& 

если я никогда не запускал некоторые приложения с su раньше, он будет выводиться следующим образом:

 howchen@host:~ -> su cutecom& [1] 17404 howchen@host:~ -> No passwd entry for user 'cutecom' 

5 Solutions collect form web for “как использовать & для sudo”

Хотя все ответы о sudo vs su верны, они не затрагивают & часть вопроса.

Проблема с попыткой сделать что-то вроде sudo somecommand & заключается в том, что это фоны sudo (что происходит до того, как появится возможность sudo somecommand & пароль). somecommand этого вы хотите использовать somecommand . Оператор & является оператором оболочки, поэтому он имеет приоритет и работает до вызова любых команд. Это нужно изменить так, чтобы сначала произошло sudo , а затем фон.
Поскольку оператор & является оператором оболочки, нам нужно, чтобы sudo запускал еще одну оболочку, чтобы иметь возможность ее обрабатывать. Способ сделать это – это что-то вроде следующего:

 sudo sh -c 'somecommand &' 

Таким образом вы получите запрос sudo для пароля, а затем sudo запустит sh -c 'somecommand &' , поэтому фоновая обработка будет обрабатываться новой оболочкой вместо текущей.

Как сказал @Kiwy, su cutecom означает, что вы пытаетесь изменить текущего пользователя на пользователя cutecom .

Если вы хотите su для root и запустить команду cutecom, правильный синтаксис

su -c cutecom

Это потребует ввода пароля root.

Как сказал @kiwy, гораздо шире использовать sudo для запуска команд как root. Его можно настроить, чтобы вы могли запускать какую-либо команду в качестве другого пользователя и не требовать пароль, или разрешить использовать свой собственный пароль вместо пароля root.

Если по какой-то причине вам абсолютно необходимо использовать su вместо sudo, это должно помочь следующее. Я использую bash для этих примеров, любая оболочка, у которой есть возможности управления заданиями, должна вести себя аналогично, насколько я когда-либо испытывал. Запустите команду, как показано ниже:

 su root -c cutecom 

Как только cutecom запустится, нажмите Control-Z. В большинстве оболочек и в большинстве сред, где я когда-либо был, Control-Z – это Suspend Sequence. Оболочка должна ответить на что-то похожее:

 [1]+ Stopped su root -c cutecom 

И он вернет вас обратно в приглашение оболочки. Предполагая, что предыдущий ответ начался с [1], введите следующую команду:

 bg %1 

Это положит работу №1 в фоновом режиме, напечатает что-то похожее на следующее:

 [1]+ su root -c cutecom & 

и верните вам запрос.

Если вам когда-либо понадобится вернуть его на передний план (это также работает для регулярных заданий, начинающихся с &), вы можете ввести:

 fg %1 

Если вам нужен список всех фоновых и приостановленных заданий, вы можете использовать команду jobs:

 jobs [1]+ Stopped su root -c dullcom [2]- Running su root -c cutecom & 
 sudo bash what_ever_command & exit 

Команда su используется для аутентификации как root по умолчанию или как имя пользователя переходит в качестве первого аргумента. Например, su foo попытается аутентифицировать вас как пользователя foo .

Команда sudo используется для запуска команды в корневом контексте без использования пользователя root .

объяснение команды sudo через пример «Сделай меня бутербродом»

Если вы хотите выполнить команду с правами root:
sudo mycommand если вы хотите запустить команду фона как root просто попробуйте:
sudo mycommand&

Когда-нибудь это не сработает, я не знаю, почему (я полагаю, из-за системного вызова, которому также нужен root-доступ), тогда вы можете подключиться как root, используя:
sudo -s а затем введите mycommand&

если вы хотите аутентифицироваться как root try:
su

Но если sudo доступен в вашей системе, есть несколько шансов, что su будет работать.

  • Как избежать одиночных кавычек, правильно создающих псевдоним
  • Все файлы в каталоге, которые не заканчиваются в определенной строке?
  • Почему расширение файла glob не подавляется
  • Отдельные пространства имен для функций и переменных в оболочках POSIX
  • Как проверить, какую оболочку я использую в терминале?
  • Как создать случайную строку в псевдониме профиля?
  • Как передать переменную среды при изменении rooting?
  • разделяя команду на одну строку на две части, чтобы она была более «структурирована» эстетически
  • База данных: 0403-009 Указанное число недопустимо для этой команды
  • как добавить строки новой строки между строками, напечатанными в командной строке?
  • Как конвертировать скрипт init Ubuntu в сценарий инициализации Amazon Linux AMI?
  • Linux и Unix - лучшая ОС в мире.