Actualmente uso una línea como esta en mi archivo de script sh:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Pero me pregunto cómo llamarlo solo si el proceso ( myServer
aquí) se está ejecutando.
bash
command-line
kill
myWallJSON
fuente
fuente
kill
solo cuando el proceso se está ejecutando, porque hay una condición de carrera entre la prueba y la invocación dekill
(es posible que el proceso se haya detenido por otro motivo en ese corto tiempo). Debería usarpkill
okillall
hacer exactamente lo mismo que intenta hacer, pero con menos para escribir (y probablemente algunas otras ventajas también).Respuestas:
Usualmente solo uso pgrep y pkill
fuente
pkill myServer
okillall -q myServer
? No hay inconveniente en intentar matar procesos inexistentes.|| true
entonces.if ! killall -q myServer; then echo ERROR; fi
?Puede eliminar procesos por nombre usando
pkill
okillall
, consulte sus páginas de manual.fuente
kill
, esto mata solo si el proceso se está ejecutando. Por ejemplopkill -u myuser -f myprocess\.[0-9]+
Un enfoque un poco diferente sería algo como esto:
Esto evitará el
1
Código de error devuelto por elkillall
comando, si el proceso no existiera. Laecho
parte solo entrará en acción, sikillall
regresa1
, mientras que sí misma regresará0
(éxito).fuente
killall -q
es mejorkillall -q
no es compatible con todos los sabores de Unix, macOS Catalina todavía no lo tiene.intente usar:
donde nombre_proceso es el nombre del proceso que desea eliminar. Lo bueno de esto es que pidof enumerará los pid de todos los procesos que coincidan con el nombre de pila. Dado que kill acepta múltiples pid's, matará a todos ellos de una sola vez.
Déjeme saber si esto ayuda.
fuente
kill `pidof process_name
. Si devuelve una lista vacía, omita la llamada a matar.Pequeño guión que he creado con I + D. espero que te guste
guárdelo con un nombre como script.sh y luego
Luego dale el nombre de tu proceso.
Nota: He intentado muchas veces con esto y está bien.
fuente
Compruebe si el proceso existe con
pidof
. Si lo hace, mátalo:El código de salida siempre es 0 después de ejecutar el comando anterior.
fuente
Usar
pkill
con opción-f
La opción
-f
es el patrón que normalmente se compara con el nombre del proceso.fuente
Yo usaría:
El
xargs -r
le dice a ejecutar kill solo si hay entrada. Elps --no-header -eo pid,cmd
obtiene el resultado en un mejor formato para el análisis sintáctico.fuente