У меня есть команда, которая загружает файлы с помощью git на удаленный сервер из оболочки Linux, и для завершения потребуется много часов.
Как я могу поместить эту запущенную программу в фоновом режиме? Так что я все еще могу работать на оболочке, и этот процесс также завершается?
Ответ 1
Приостановите процесс, нажав CTRL + Z, затем используйте команду bg
чтобы возобновить его в фоновом режиме. Например:
sleep 60
^Z #Suspend character shown after hitting CTRL+Z
[1]+ Stopped sleep 60 #Message showing stopped process info
bg #Resume current job (last job stopped)
Подробнее об управлении заданиями и использовании bg
на странице руководства bash
:
КОНТРОЛЬ РАБОТЫ
Ввод символа приостановки (обычно ^ Z, Control-Z) во время выполнения процесса вызывает остановку этого процесса и возвращает управление в bash. [...] Пользователь может затем манипулировать состоянием этого задания, используя команду bg, чтобы продолжить его в фоновом режиме, [...]. ^ Z вступает в силу немедленно, и имеет дополнительный побочный эффект, приводящий к тому, что ожидающий вывод и typeahead отбрасываются.
bg [jobspec...]
Возобновите каждое задание приостановленной работы в фоновом режиме, как если бы оно было запущено с &. Если jobspec отсутствует, используется понятие оболочки текущего задания.
РЕДАКТИРОВАТЬ
Чтобы начать процесс, где вы можете даже убить терминал, и он все еще продолжает работать
nohup [command] [-args] > [filename] 2>&1 &
например
nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &
Чтобы просто игнорировать вывод (не очень разумно), измените имя файла на /dev/null
Чтобы получить сообщение об ошибке для другого файла, измените &1
на имя файла.