detener como bash process kill nohup

bash - como - kill nohup process



¿Cómo matar un proceso de nohup? (5)

Ejecuté el siguiente comando

$ nohup ./tests.run.pl 0 &

ahora cuando intento matarlo (y las ejecuciones que se inician desde este script) usando

$ kill -0 <process_id>

No funciona. ¿Cómo puedo matar un proceso nohupped y los procesos que se ejecutan a través del script nohupped?

Gracias


Haría algo como:

jobs [1] + Running nohup ./tests.run.pl kill %1


Si no conoce los identificadores de proceso y puede ejecutar varios comandos dentro de un shell (o un bucle), puede ejecutar jobs -l para enumerar trabajos y PID, luego kill .

Ver ejemplo:

ubuntu@app2:/usr/share/etlservice/bin$ jobs -l [1] 27398 Running nohup ./extract_assessor_01.sh > job1.log & [2] 27474 Running nohup ./extract_assessor_02.sh > job2.log & [3] 27478 Running nohup ./extract_assessor_03.sh > job3.log & [4]- 27481 Running nohup ./extract_assessor_04.sh > job4.log & [5]+ 28664 Running nohup ./extract_assessor_01.sh > job1.log & ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27398 sudo kill 27474[1] Terminated nohup ./extract_assessor_01.sh > job1.log ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27474 [2] Terminated nohup ./extract_assessor_02.sh > job2.log ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27478 [3] Terminated nohup ./extract_assessor_03.sh > job3.log ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27481 [4]- Terminated nohup ./extract_assessor_04.sh > job4.log ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 28664 [5]+ Terminated nohup ./extract_assessor_01.sh > job1.log ubuntu@app2:/usr/share/etlservice/bin$


Simplemente kill <pid> que enviará un SIGTERM , que nohup no ignorará.

No debe enviar un SIGKILL primero, ya que no le da al proceso ninguna posibilidad de recuperación; Debes probar lo siguiente, en orden:

  • SIGTERM (15)
  • SIGINT (2)
  • SIGKILL (9)

matar el proceso nohup

ps aux |grep nohup

grep that PID kill -15 -1 16000 (cerrará sesión) y limpiará en la próxima raíz de inicio de sesión


kill -0 no mata el proceso. Simplemente comprueba si puedes enviarle una señal.

Simplemente kill pid , y si eso no funciona, prueba kill -9 pid .