Положить процесс в фоновом режиме, не останавливая его - (Ctrl+ Z)?
Если я запускаю процесс, набирая его обычно в командной строке, например
wget http://site.com/bigfile.zip
а затем решить, что я хочу переместить это на задний план, я знаю, что я могу использовать что-то вроде ctrl+z
а потом bg 1
(или же jobs
сначала, если нужно, чтобы получить идентификатор), чтобы поместить его в фоновом режиме.
У меня вопрос, есть ли способ переместить работу с переднего плана прямо на фон, не останавливая ее - как другой ярлык, кроме ctrl+z
это сделало бы это.
Я также понимаю, что я могу добавить &
до конца исходной команды, чтобы запустить его в фоновом режиме, но вопрос в том, когда вы запускаете процесс на переднем плане, а затем понимаете, что хотите переместить его в фоновый режим.
1 ответ
Да, абсолютно: screen(1) - это ответ.
Чтобы начать, добавьте screen -R
в ~/.bash_profile или эквивалентный, выйдите и снова войдите в систему.
Чтобы продолжить работу в фоновом режиме, нажмите Control-A, а затем N. Это создаст новый экран терминала на переднем плане, в то же время плавно продолжая процесс выполнения в фоновом режиме.
Нажмите Control-A, а затем ", чтобы получить интерактивный список открытых экранов, или нажмите Control-A, а затем номер, чтобы переключиться непосредственно на определенный экран.
Ваше первоначальное требование состояло в том, чтобы иметь возможность переместить процесс в фоновый режим, не останавливая его. У Screen есть два дополнительных преимущества, и они огромны, если вы хотите сделать несколько вещей одновременно:
- Вы можете переключаться между процессами гораздо более плавно, чем с помощью Control-Z, bg, fg и т. Д.
- Если сеанс терминала отключен, ваши процессы (например,
wget http://example.com/bigfile.iso
) НЕ прекратится! Все ваши сеансы оболочки будут ждать вас при повторном подключении.
Для получения дополнительной информации прочитайте справочную страницу screen(1) или Руководство по экрану GNU.
bg
запускает остановленное задание и оставляет его работающим в фоновом режиме. В принципе
fg
и
bg
делают то же самое, они возобновляют процесс, но
fg
делает это на переднем плане, пока
bg
делает это в фоновом режиме.
Просто беги
bg %(number of the job)
и вы получите сообщение "runnning". Если вы проверите свои задания, вы увидите, что ваша работа выполняется, а не остановлена.