jueves, 29 de noviembre de 2012

Como matar un proceso por si se nos traba Linux

El nombre entero de esta entrada es:

Como matar un proceso/cerrar un programa desde una tty por si se nos traba el sistema

Pero como siempre era muy largo el titulo y esto lo penaliza google :D .

Algunas veces aunque casi sea un mito y mas en comparación con Windows,se nos traba Linux,mas que nada seria nuestra distribución y si se nos traba ya que hay muchas personas que usan de broma esto:

Enlace
Y la verdad en GNU/Linux no se nos traba/bloquea tan horrible ya que ese parece un trojan horse con un loop para abrir ventanas,mas que nada  esto pasa por nuestros modulos/drivers y por programas que instalamos mal,no funcionan bien en nuestro sistema, también yo uso esto al estar haciendo mis programas y si escribo algo mal puedo tumbar el sistema o simplemente trabarlo,incluso en Ubuntu últimamente cuando hacemos muchas cosas,o porque un programa esta mal programado  ya es muy común verlo bloqueado.

Así que aquí el tutorial por si se les traba (como diríamos coloquialmente)

Ya que trabado puede no ser bien entendido, así que usemos un hash de perl para entenderlo:

my %palabras = {

"trabar" =>"bloquear"

};


Tutorial

1.Primero necesitamos saber el proceso de nuestro programa,este lo obtenemos desde la consola,pero si no esta disponible por eso mismo,abrimos una tty

Tutorial

2.Para saber el PID (identidad del proceso) de un proceso podemos con

top



Nota:Esta es mi terminal,pero esto debe ser la tty,solo use la terminal para poder sacar los screenshots.

Pero top se tarda mucho y esta en constante movimiento :S

Ya que el proceso es el numero de la izquierda,y por ejemplo si se nos traba gedit, haríamos esto

top | grep gedit
Pero como dije se tarda mucho :(

Mejor usamos ps

Así que para ver el PID de un programa con esto lo hacen

ps -ef 
Y filtramos un poco

ps -ef | grep gedit


Como dije es el numero de la izquierda(el primero),y la primera linea,ya que la segunda es el mismo PID que pide el PID por eso siempre nos dará un PID distinto.

De hecho si queremos filtrarlo mas podemos usar awk

ps -ef | grep gedit | awk '{print $2}' 


O para que no se muestre el PID que pide el PID podemos añadir un parámetro al pipe para cortarlo:


ps -ef | grep -v grep | grep gedit | awk '{print $2}'


Y listo ya tenemos el PID

3.Matar el PID

Para matar ese proceso solo basta con hacer kill sobre el PID

kill PID

También podemos usar

pidof PID
Y también para mas fácil :

pkill gedit
Que?

pkill gedit ¡WTF! entonces para que tanto PID

Así es, se puede matar una aplicación de esa manera,pero yo recomiendo que lo hagan por PID ya que puede que tengan varias sesiones en distintas tty,como yo,en una Gnome SHELL,en otra AWESOME, en otra TTY,etc.


Tambien otra opcion es por si no sabemos el nombre del programa en proceso,por ejemplo,como se llama Google Chrome en un proceso?

Google-Chrome

google_chrome

Chrome

chrome

google

ect ?

Y sabremos el nombre....

¿?

Como?

Pues hacemos un filtrado básico con grep,por ejemplo si se llama chrome,podemos probar


ps -ef | grep goo

o

ps -ef | grep hrome

Y si lo matamos por nombre puede dar errores,o cerrarnos algo que no queremos

De hecho también existe


killall gedit
 xkill,etc

Y cuando hayamos eliminado ese proceso/programa regresamos a nuestro escritorio :D

5 comentarios:

  1. Tengo que decirte que para que no se muestre el PID del pipe para solitar el PID necesitas cortarlo con grep -v

    ps -ef | grep -v grep | grep gedit | awk '{print $2}'

    De esta manera lo harás mas especifico :)

    Esto me recuerda cuando se nos bloqueo una pc en un cafe internet casi no la cobran xDDDD

    ResponderBorrar
    Respuestas
    1. Si XD,ahora ya da risa pero en el momento dan ganas de llorar,maldita pc con #"=?* Windows xp y ya no reconocía nada la maldit*.

      Pero hasta a los mejores les a pasado XD

      Editare la entrada con el comando que mencionaste,no sabia que grep hacia eso

      Es como grep /¡palabra/ de perl no?

      gracias :D

      Borrar
    2. Pues en el --help dice --invert-match

      Lo que hace es seleccionar líneas que no coinciden.

      Como creo que dices,en perl es grep(!/palabra/, @array)

      :)

      Borrar
    3. Si me refería a esto grep(!/palabra/),aveces se me va el avión :|

      Debo comenzar a usar mas --help,man,info,usaba un script en perl,para hacer eso.

      :D

      Borrar
    4. Aveces...

      Tanto que se esfuerzan los programadores para hacer el manual del programa y seguro que primero buscas en google o intentas crear algo para hacer eso en vez de hacer --help

      LOL

      Borrar

Los comentarios serán revisados antes de ser publicados.