Colocando um processo em segundo plano sem pará-lo - (ctrl + z)?

16

Se eu iniciar um processo digitando-o normalmente na linha de comando, como

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

e depois decido que quero mover isso para o segundo plano, sei que posso usar algo como ctrl+ze depois bg 1(ou jobsprimeiro, se necessário, obter o ID) para colocá-lo em segundo plano.

Minha pergunta é se existe uma maneira de mover um trabalho do primeiro plano diretamente para o segundo plano sem pará-lo - como outro atalho além ctrl+zdisso faria isso.

Também sei que posso acrescentar &ao final do comando original para iniciá-lo em segundo plano, mas a questão é quando você inicia um processo em primeiro plano e depois percebe que deseja movê-lo para o segundo plano.

cwd
fonte

Respostas:

14

Sim, absolutamente: a tela (1) é a resposta.

Para começar, adicione screen -Ra ~ / .bash_profile ou equivalente, saia e faça login novamente.

Para continuar o que está sendo executado em segundo plano, pressione Control-A e depois N. Isso criará uma nova tela do terminal em primeiro plano, enquanto continua o processo em execução em segundo plano.

Pressione Control-A e depois "para obter uma lista interativa de telas que você abriu, ou pressione Control-A e um número para alternar diretamente para uma tela específica.

Seu requisito original era poder mover um processo para o plano de fundo sem pará-lo. A tela tem dois benefícios adicionais, e estes são enormes se você quiser fazer várias coisas ao mesmo tempo:

  1. Você pode alternar entre processos com muito mais fluidez do que usando Control-Z, bg, fg, etc.
  2. Se sua sessão do terminal for desconectada, seus processos (como wget http://example.com/bigfile.iso) NÃO serão encerrados! Todas as suas sessões de shell estarão lá esperando por você quando você se reconectar.

Para obter mais informações, leia a página de manual da tela (1) ou o Manual da tela GNU .

Falcão do céu
fonte
11
Apenas certifique-se que você tem o screenpacote instalado pela primeira vez :)
George Tasioulis