terminar - procesos colgados en linux
Proceso de matar por archivo pid (2)
Intento matar un proceso por archivo pid:
kill -9 $(cat /var/run/myProcess.pid)
El archivo pid contiene el número de proceso. Sin embargo, ejecutar kill no me proporciona una salida estándar y el proceso sigue vivo. Pero esto funciona:
kill -9 PID
¿Qué pasa con el primer comando de matar? ¿No puede extraer el PID del archivo?
Contenido de ejemplo del archivo pid:
5424
y
kill -9 5424
trabajos.
Creo que estás experimentando esto porque tu shell predeterminado es dash (el shell de Debian almquist), pero estás usando la sintaxis bash. Puede especificar bash en la línea shebang con algo así como,
#!/usr/bin/env bash
O bien, podría usar la expresión compatible con el admdrew y el bash compatible con admdrew en los comentarios
kill -9 `cat /var/run/myProcess.pid`
De todos modos, no puedes confiar en que /bin/sh
sea bash.
En algunas situaciones, el más compacto:
pkill -F /var/run/myProcess.pid
es el camino a seguir. He tenido problemas con las variedades:
kill $(cat /var/run/myProcess.pid)
# Or
kill `cat /var/run/myProcess.pid`
cuando tuve que poner el comando en otra cosa que podría analizarlo usando diferentes reglas, como hace Monit para sus comandos de inicio / detención.