ver usuario todos terminar script procesos los español ejecucion corriendo comandos comando linux bash shell scripting

todos - ver procesos de un usuario linux



Script de Shell para obtener el ID del proceso en Linux (9)

Es bastante simple. Simplemente ejecute cualquier programa como este: - x = gedit y echo $! esto le dará PID de este proceso. entonces haz esto matar -9 $ x

Esta pregunta ya tiene una respuesta aquí:

Quiero escribir un script de shell (archivo .sh ) para obtener un ID de proceso determinado. Lo que trato de hacer aquí es que una vez que obtenga el ID del proceso, quiero matar ese proceso. Estoy corriendo en Ubuntu (Linux).

Pude hacerlo con un comando como

ps -aux|grep ruby kill -9 <pid>

pero no estoy seguro de cómo hacerlo a través de un script de shell.


Esto funciona en Cygwin pero también debería ser efectivo en Linux.

ps -W | awk ''/ruby/,NF=1'' | xargs kill -f

o

ps -W | awk ''$0~z,NF=1'' z=ruby | xargs kill -f

Bash Pitfalls


Para empezar, no hay necesidad de hacer un ps -aux | grep... ps -aux | grep... El comando pidof es mucho mejor de usar. Y casi nunca kill -9 mira here

para obtener la salida de un comando en bash, usa algo como

pid=$(pidof ruby)

o use pkill directamente.


Para matar el proceso en shell

getprocess=`ps -ef|grep servername` #echo $getprocess set $getprocess pid=$2 #echo $pid kill -9 $pid


Puedes usar el comando killall :

$ killall ruby


Si va a usar ps y grep , debe hacerlo de esta manera:

ps aux|grep r[u]by

Esos corchetes harán que grep omita la línea del comando grep. Entonces, para usar esto en un script hazlo:

output=`ps aux|grep r/[u/]by` set -- $output pid=$2 kill $pid sleep 2 kill -9 $pid >/dev/null 2>&1

Los retrocesos le permiten capturar la salida de un comand en una variable de shell. El set -- analiza la salida ps en palabras, y $ 2 es la segunda palabra en la línea que pasa a ser el pid. Luego envías una señal TERM, esperas un par de segundos para que ruby ​​se apague, luego la mata sin piedad si aún existe, pero descartas cualquier salida porque la mayoría de las veces kill -9 se quejará de que el proceso ya está muerto .

Sé que lo he usado sin las barras invertidas antes de los corchetes, pero justo ahora lo comprobé en Ubuntu 12 y parece necesitarlo. Esto probablemente tiene algo que ver con las muchas opciones de bash y la configuración predeterminada en diferentes distros de Linux. Espero que [y] funcione en cualquier lugar, pero ya no tengo acceso a los servidores, donde sé que funcionó sin barra invertida, así que no puedo estar seguro.

Un comentario sugiere grep-v y eso es lo que solía hacer, pero luego cuando me enteré de la variante [], decidí que era mejor generar un proceso menos en la tubería.


Si ya conoce el proceso, esto será útil:

PID=`ps -eaf | grep <process> | grep -v grep | awk ''{print $2}''` if [[ "" != "$PID" ]]; then echo "killing $PID" kill -9 $PID fi


Usar grep en los resultados de ps es una mala idea en un script, ya que una parte del tiempo también coincidirá con el proceso grep que acaba de invocar. El comando pgrep evita este problema, por lo que si necesita conocer el ID del proceso, esa es una mejor opción. (Tenga en cuenta que, por supuesto, puede haber muchos procesos combinados).

Sin embargo, en su ejemplo, puede usar el comando similar pkill para eliminar todos los procesos coincidentes:

pkill ruby

Por cierto, debes tener en cuenta que el uso de -9 es excesivo (ho ho) en casi todos los casos, hay algunos consejos útiles al respecto en el texto de la "Letra de formulario Useless use of kill -9 ":

No no no. No uses kill -9 .

No le da al proceso una oportunidad de limpieza:

  1. cerrar las conexiones de socket
  2. limpiar archivos temporales
  3. informar a sus hijos que se va a ir
  4. restablecer sus características de terminal

Y así sucesivamente y así sucesivamente y así sucesivamente.

En general, envíe 15, y espere uno o dos segundos, y si eso no funciona, envíe 2, y si eso no funciona, envíe 1. Si eso no sucede, ELIMINAR EL BINARIO porque el programa se comportó mal.

No uses kill -9 . No saque la cosechadora solo para poner en orden la maceta.


la opción -v es muy importante. Puede excluir una expresión grep sí misma

p.ej

ps -w | grep sshd | grep -v grep | awk ''{print $1}'' to get sshd id