web-dev-qa-db-pt.com

Como posso retomar um trabalho interrompido no Linux?

Como posso retomar um trabalho interrompido no Linux? Eu estava usando o emacs e acidentalmente acertei o ctrl-z, que me levou de volta ao console. Eu posso ver quando digito 'jobs'

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp
319
Bobby

O comando fg é o que você deseja usar. Você também pode fornecer um número de trabalho se houver mais de um trabalho interrompido.

357
Ilkka

Os comandos gerais de controle de tarefas no Linux são:

  • jobs - listam os trabalhos atuais
  • fg - resume o trabalho que está próximo na fila
  • fg% [número] - retomar o trabalho [número]
  • bg - Pressione o próximo trabalho na fila para o segundo plano
  • bg% [number] - Pressione o trabalho [número] para o fundo
  • kill% [number] - mata o trabalho numerado [number]
  • kill - [signal]% [number] - Envia o sinal [signal] para o job number [number]
  • rejeita% [number] - rejeita o processo (não mais terminal será proprietário), então o comando estará ativo mesmo depois de fechar o terminal.

Isso é praticamente todos eles. Observe o% na frente do número do trabalho nos comandos - isso é o que diz que você está falando sobre tarefas e não processos.

250
Majenko

Você também pode digitar %<process_name>; ou seja, você pressiona Ctrl-Z no emacs e, em seguida, pode digitar %emacs no console e trazê-lo de volta para o primeiro plano.

47
NickD

Apenas para adicionar às outras respostas, bash permite pular a fg se você especificar um número de trabalho.

Por exemplo, são equivalentes e retomam o trabalho mais recente:

%
%%
fg
fg %

Este resume o trabalho # 4:

%4
fg 4
31
grawity

Se você não o iniciou a partir do terminal atual, use ps aux | grep <process name> para encontrar o número do processo (pid) e, em seguida, reinicie-o com:

kill -SIGCONT <pid>

(Apesar do nome, kill é simplesmente uma ferramenta para enviar um sinal ao processo, permitindo que os processos se comuniquem entre si. Um "sinal de kill" é apenas um dos muitos sinais padrão.)

Dica bônus: envolva o primeiro caractere do nome do processo com [] para evitar que o próprio comando grep apareça nos resultados. por exemplo. para encontrar o processo emacs, use ps aux | grep [e]macs

18
mahemoff