Как я могу поместить текущий текущий процесс linux в фоновом режиме?

У меня есть команда, которая загружает файлы с помощью 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 на имя файла.