Como suspender e retomar processos


143

No terminal bash, posso pressionar Control+ Zpara suspender qualquer processo em execução ... e digitar fgpara retomar o processo.

É possível suspender um processo se eu tiver apenas o PID? E se sim, qual comando devo usar?

Estou procurando algo como:

suspend-process $PID_OF_PROCESS

e depois retomar com

resume-process $PID_OF_PROCESS

Respostas:


172

Você pode usar killpara parar o processo.

Para uma parada 'educada' para o processo (prefira isso para uso normal), envie SIGTSTP:

kill -TSTP [pid]

Para uma parada 'difícil', envie SIGSTOP:

kill -STOP [pid]

Observe que se o processo que você está tentando parar pelo PID estiver na tabela de tarefas do seu shell, ele poderá permanecer visível lá, mas encerrado, até que o processo seja fgnovamente executado.

Para retomar a execução do processo, enviou o SIGCONT:

kill -CONT [pid]

25
A menos que haja outros motivos, eu preferiria o SIGTSTP ao SIGSTOP, pois alguns aplicativos lidam com o SIGTSTP especialmente. Por exemplo, se o scp estiver mostrando uma barra de progresso, o SIGTSTP fará com que ele limpe o modo de terminal antes de suspender, mas se você enviar o SIGSTOP, ele não terá chance de fazê-lo.
ephemient

3
@ephemient Tentei o SIGTSTP, vi o que você estava dizendo sobre a limpeza do terminal. Obrigado pela explicação de SIGTSTP, alawys bom para aprender coisas novas :)
Steve Burdine

2
Também é útil observar que você pode fazer referência ao valor [pid] usando o símbolo% e, em seguida, o número do trabalho (um que você pode encontrar executando jobs). Então você iria:kill -TSTP %1
Karoh 2/16


43

Você deve usar o killcomando para isso.

Para ser mais detalhado - você precisa especificar o sinal certo , ou seja,

$ kill -TSTP $PID_OF_PROCESS

para suspender o processo e

$ kill -CONT $PID_OF_PROCESS

para retomar. Documentado aqui .


Eu me pergunto que acidente da história levou a esta resposta recebendo menos votos? As respostas são quase o mesmo e este veio pela primeira vez ....
Wildcard

7
@Wildcard, quando criei a resposta, estava com pressa, portanto, basicamente continha apenas a primeira parte kill -TSTP(por exemplo, como suspender). Meio ano depois, ou seja, 2011, revisitei minha resposta e notei sua incompletude. Assim, editei e adicionei também a kill -CONTparte. Isso deve explicar a diferença de votos em comparação com a resposta de Steve.
Maxschlepzig
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.