Я хочу выполнить команду sudo apt-get update &
. Однако после нажатия Enter, когда я нажимаю jobs
, он показывает состояние этих команд как остановленных. Я предполагаю, что, выдвигая процесс в фоновом режиме, я не дал ему возможность спросить пароль. Есть ли способ запустить процесс в фоновом режиме, который требует пароль?
В первую очередь, "Это не лучшая практика".
Но можно использовать команду sudo -S
Sudo-S:
-S (stdin) опция заставляет sudo читать пароль из стандартного входа вместо оконечного устройства.
Так, Перейдите к терминалу и типу:
echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &
это будет работать, склонная команда - получают обновление без подсказки для пароля и backgroud,
и перенаправит (добавляют) stdout и stderr к файлу журнала в Вашем домашнем именованном myaptupd.log, на всякий случай можно проверить, в порядке ли все с Кв. - получают команду обновления.
Сделайте к этому, большая команда, можно поместить эту команду как Псевдоним в .bashrc файле. Например: В терминальном типе:
gedit /home/user/.bashrc
Добавьте эту строку в конец файла
alias myaptupd='echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &'
Перезагрузите свой .bashrc
В терминальном движении к Вашему корневому каталогу просто введите:
cd
Затем тип:
source .bashrc
или
. .bashrc
Теперь в терминале просто вводят Псевдоним как команду:
myaptupd
Можно свериться с командой jobs
состояние.
С другой стороны, можно создать сценарий удара и названный myaptupd.sh
Например:
#! /bin/bash
echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &
Для безопасности можно установить перманент на:
chmod 700 /path/to/the/myaptupd.sh
Затем можно назвать сценарий с:
bash /path/to/the/myaptupd.sh
Или сделайте Псевдоним в своем .bashrc
alias myaptupd='bash /path/to/the/myaptupd.sh'
Перезагрузите свой .bashrc (как, объясняет он прежде), и можно ввести имя псевдонима для запущения скрипта:
myaptupd
Надежда это будет полезный!
С уважением.
Попробуйте:
xterm -e "sudo -b nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null"
при закрытии xterm, веб-сервер php еще жив,
Не помещайте «nohup» перед «sudo», иначе веб-сервер php будет убит после закрытия xterm.
Я добавил следующее к своему .bash_profile файлу.
sudobg() {
sudo echo "Password entered"
sudo $@ &
}
Затем я могу просто звонить:
prompt$ sudobg echo "Hello from the background."
И я добираюсь:
Password:
Password entered
[1] 6773
prompt$ Hello from the background.
Отказ от ответственности: Я использую удар, но не Ubuntu. Могут быть лучшие местоположения для этого функционального определения.
Лучший и безопасный способ:
su -c "sudo apt-get update &"
Вы также можете передать вывод в файл журнала:
su -c "sudo apt-get update > update.log &"
Попробуйте сначала ввести sudo -i
, а затем apt-get update &
или просто выполнить команду:
sudo -i && apt-get update &
Еще можно попробовать команду:
gksudo && sudo apt-get update &
Но я не уверен, что это сработает.
Или вы можете попробовать добавить своего пользователя в список пользователей, которым не требуется вводить пароль при использовании sudo.
Для этого добавьте в терминал тип sudo visudo
. Затем добавьте строку
%super_sudoers ALL=(ALL) NOPASSWD: ALL
Или как хотите, чтобы вызывать группу (вы можете изменить «super_sudoers»), а затем добавьте своего пользователя в эту группу, набрав
usermod -a -G super_sudoers yourusername
(очевидно, заменяя ваше имя пользователя вашим именем пользователя)
и перезагрузите компьютер (или, возможно, выйдите из системы / войдите в систему, но не уверены), чтобы найти, что вы можете вводить команды suo без необходимости вводить пароль. Это, конечно, означает, что другие люди могут убедиться, что вы всегда оставляете свой компьютер заблокированным и не включаете автоматический вход в систему.