Поместить процесс в фоновом режиме, не останавливая его - (Ctrl + Z)?

16

Если я запускаю процесс, набирая его обычно в командной строке, например

wget http://site.com/bigfile.zip

и затем решаю, что хочу переместить это в фон, я знаю, что могу использовать что-то вроде, ctrl+zа затем bg 1(или jobsсначала, если необходимо, чтобы получить идентификатор), чтобы поместить его в фоновом режиме.

У меня вопрос, есть ли способ переместить задание с переднего плана прямо на фон, не останавливая его - как другой ярлык, кроме того, ctrl+zкоторый бы это сделал.

Я также понимаю, что могу добавить &в конец исходную команду, чтобы запустить ее в фоновом режиме, но вопрос заключается в том, когда вы запускаете процесс на переднем плане, а затем понимаете, что хотите переместить его в фоновый режим.

УХО
источник

Ответы:

14

Да, абсолютно: 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 .

штурмовик типа "Скайхки"
источник
1
Просто убедитесь, что вы установили screenпакет первым :)
Джордж Тасиулис