Положить процесс в фоновом режиме, не останавливая его - (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 есть два дополнительных преимущества, и они огромны, если вы хотите сделать несколько вещей одновременно:

  1. Вы можете переключаться между процессами гораздо более плавно, чем с помощью Control-Z, bg, fg и т. Д.
  2. Если сеанс терминала отключен, ваши процессы (например, wget http://example.com/bigfile.iso) НЕ прекратится! Все ваши сеансы оболочки будут ждать вас при повторном подключении.

Для получения дополнительной информации прочитайте справочную страницу screen(1) или Руководство по экрану GNU.

bgзапускает остановленное задание и оставляет его работающим в фоновом режиме. В принципе fg и bg делают то же самое, они возобновляют процесс, но fg делает это на переднем плане, пока bg делает это в фоновом режиме.

Просто беги bg %(number of the job)и вы получите сообщение "runnning". Если вы проверите свои задания, вы увидите, что ваша работа выполняется, а не остановлена.

Другие вопросы по тегам