На этот вопрос уже есть ответ здесь:
Можно ли запустить задачу или сценарий, запущенные с терминала в фоновом режиме?
Существует несколько ответов здесь, в зависимости от того, что Вы хотите (этот ответ действителен в bash
и zsh
оболочки, другие могут варьироваться).
Если необходимо выполнить команду в фоне, и Вы знаете это прежде, чем выполнить его, просто добавляете a &
в конце команды (использование sleep 60
, ничего не сделайте в течение 1 минуты как команда в качестве примера):
[romano:~] % sleep 60 &
[1] 9054
1& [romano:~] %
Если Вы уже выполнили его, можно остановить его с ctrl-Z, и когда оболочка дает Вам подсказку, Вы можете фон это с командой bg
:
1& [romano:~] % sleep 60
^Z
[1] + 9084 suspended sleep 60
1z [romano:~] 20 % bg
[1] + 9084 continued sleep 60
1& [romano:~] %
В обоих случаях процесс/задание все еще присоединен к Вашему терминалу; при закрытии терминала, зависание (ПОНУКАЕТ) сигнал, отправляется в процесс---, большая часть процесса корректно выйдет затем. Если необходимо удостовериться, что процесс продолжится, можно или запустить его с:
nohup sleep 60 &
или, отправив это в фон с bg
или с простым &
, скажите оболочке забывать об этом, с:
disown %%
(%%
ярлык управления заданиями и здесь обозначает последний процесс, отправленный в фоне).
Затем необходимо принять во внимание вывод процесса---в первых двух случаях, вывод все еще прибудет в терминал; в случае nohup
это будет отклонено на названном файле nohup.out
, и в последнем случае (с disown
) это перейдет к терминалу, если Вы не закроете его, в этом случае поведение довольно не определено. Это - хорошая практика для заботы самостоятельно о выводе фонового процесса с помощью перенаправления.
Этот пример выполнит обновления в фоновом режиме:
sudo apt-get dist-upgrade -y &
Просто отмечают ожог &.
, Если Вы хотите скрыть stdout, сделайте следующее:
sudo apt-get dist-upgrade -y > /dev/null &
Если Вы хотите его более усовершенствованный, и хотите быть в состоянии использовать сессию позже локально или SSH, можно использовать экран.
# screen
# apt-get update -y
Тогда нажатие CTRL + , сопровождаемый D .
Позже можно повторно прикрепить:
# screen -rd