Cómo suspender y reanudar procesos

143

En la terminal bash puedo presionar Control+ Zpara suspender cualquier proceso en ejecución ... luego puedo escribir fgpara reanudar el proceso.

¿Es posible suspender un proceso si solo tengo su PID? Y si es así, ¿qué comando debo usar?

Estoy buscando algo como:

suspend-process $PID_OF_PROCESS

y luego reanudarlo con

resume-process $PID_OF_PROCESS
Stefan
fuente

Respuestas:

172

Puedes usar killpara detener el proceso.

Para una parada 'cortés' al proceso (prefiera esto para uso normal), envíe SIGTSTP:

kill -TSTP [pid]

Para una parada 'dura', envíe SIGSTOP:

kill -STOP [pid]

Tenga en cuenta que si el proceso que está tratando de detener por PID está en la tabla de trabajo de su shell, puede permanecer visible allí, pero finalizado, hasta que el proceso se fgvuelva a ejecutar.

Para reanudar la ejecución del proceso, envió SIGCONT:

kill -CONT [pid]
Steve Burdine
fuente
25
A menos que haya otras razones para ello, preferiría SIGTSTP sobre SIGSTOP, ya que algunas aplicaciones manejan SIGTSTP especialmente. Por ejemplo, si scp muestra una barra de progreso, SIGTSTP hará que limpie el modo terminal antes de suspenderlo, pero si envía SIGSTOP, no tendrá la oportunidad de hacerlo.
Ephemient
3
@ephemient Intenté SIGTSTP, vi lo que estabas diciendo sobre limpiar el terminal. Gracias por la explicación de SIGTSTP, siempre es bueno aprender cosas nuevas :)
Steve Burdine
2
También es útil tener en cuenta que puede hacer referencia al valor [pid] utilizando el símbolo% y luego el número de trabajo (uno que puede encontrar ejecutando jobs). Entonces irías:kill -TSTP %1
Karoh
Ver también: [ stackoverflow.com/questions/11886812/…
AAAfarmclub
43

Deberías usar el killcomando para eso.

Para ser más detallado, debe especificar la señal correcta , es decir

$ kill -TSTP $PID_OF_PROCESS

por suspender el proceso y

$ kill -CONT $PID_OF_PROCESS

por reanudarlo Documentado aquí .

maxschlepzig
fuente
Me pregunto qué accidente de la historia llevó a que esta respuesta obtuviera menos votos. Las respuestas son casi las mismas y esta vino primero ...
Comodín
77
@Wildcard, cuando creé la respuesta tenía un poco de prisa, por lo tanto, básicamente solo contenía la primera parte kill -TSTP(es decir, cómo suspender). Medio año después, es decir, 2011, volví a visitar mi respuesta y noté que estaba incompleta. Por lo tanto, lo edité y agregué también la kill -CONTparte. Esto debería explicar la diferencia de votos en comparación con la respuesta de Steve.
maxschlepzig