Mata a un proceso con un solo comando

Muchas veces necesitamos mediante una terminal matar un proceso. Si conocemos el nombre completo del proceso (por ejemplo: kate) no tenemos problemas, un simple:

killall kate

Nos resuelve el problema… pero, ¿qué sucede si no conocemos el nombre exacto del proceso?

En esas ocasiones, tenemos que listar todos los procesos con ps aux como se muestra en el siguiente screenshot:


Para entonces buscar el PID del proceso, que en este caso buscamos el PID de kate:


Para entonces hacer un:

kill 3808

Y listo, ahí matamos al proceso.

Pues bien… en una sola línea podemos buscar el proceso (sin necesidad de saber el nombre completo), averiguar el PID de él, y además matarlo:
ps ax | grep kat | grep -v grep | awk '{print $2}' | xargs kill

Como pueden ver:

  1. Listamos los procesos (ps aux)
  2. No sabemos el nombre completo o exacto de kate (eh!, que podría ser kate-editor o algo así) por lo que solo filtramos por kat (grep kat)
  3. Pero nos saldrán dos procesos relacionados a kat si solo usamos este filtro, uno que es el del proceso kate, y otro que es el proceso que activamos para el filtrado, les dejo un screenshot para que se termine de entender: (Noten que hay 2 líneas, o sea, 2 procesos)

  4. Para evitar lo explicado antes, hacemos otro filtro (grep -v grep). Lo que haremos lo contrario… si filtramos usando grep, él solo mostrará las coincidencias con el filtro, bueno con grep -v le indicamos que NO muestre las coincidencias, sino que muestre lo que no coincide. Les muestro el screenshot sobre cómo sería el resultado hasta le momento: (Noten que ahora solo aparece el proceso de kate)

  5. Bien, ya tenemos aislado el proceso que deseamos matar, ahora solo nos queda extraer su PID que es el 2do número, o sea, 4062. Y el PID se encuentra en la 2da columna (la 1ra columna contiene el usuario con UID 1000), por lo que usando awk podemos decir que solo muestre de esa línea lo que encuentre en la 2da columna (awk ‘{print $2}’). Lo cual haría que solo se nos muestre el número del proceso, o sea en la terminal solo aparecerá el PID.
  6. Pero no queremos mostrar el PID, lo que queremos es matar el proceso con ese PID … por lo que eso haremos, pasamos lo que tenemos hasta ahora hacia el comando kill y listo (xargs kill)
  7. ¿Qué significa el xargs ese? … simple, en este caso no podemos pasar el PID a matar solamente con tuberías ( | ), esto simplemente no es suficiente, por lo que xargs (que permite pasar valores o datos para luego ejecutarlos o matarlos) es lo que nos permitirá terminar la faena.

Y acá acaba 😀

Sí… sé que esto parece un tanto complejo, precisamente por eso he intentado explicarlo lo mejor que he podido.

Sé que posiblemente a pocos les hará falta este comando, pero el objetivo de este artículo es el mismo que el de DesdeLinux, enseñarles algo nuevo cada día, intentando siempre que pierdan el miedo o temor a Linux… y, personalmente me encantaría también que aprendan a usar sin temor la terminal 😉

En fin… espero les haya resultado interesante, yo sigo aprendiendo cómo usar awk que de veras es genial jeje.

Saludos


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      ezitoc dijo

    Es cierto, awk me ha sido de muchísima utilidad y creo que aquella persona que necesite manipular archivos de texto estructurados, es muy recomendable que sepa utilizarlo.

    Tengo una pregunta nomás (que nada que ver con la entrada :D), cómo (y con qué programa) hiciste ese efecto borroso que te permite resaltar una porción de la captura de pantalla?

    Saludos.

         ezitoc dijo

      Probando si esto del formato funciona y sino que alguien me diga cómo hacerlo

      Muchas gracias.

         KZKG^Gaara dijo

      Pues sí… he redescubierto Linux ahora que sé trabajar con awk JAJAJAJA.
      Sobre el efecto y tal, nada… es solo Gimp 😀

      Selecciono la porción que deseo destacar, la corto con [Ctrl]+[X] y la pego como una nueva capa, luego selecciono la capa inferior (que es la que deseo opacar) y voy a Filtros-»Gaussiano (o como se escriba jeje) y listo.
      Ahora, para darle el efecto oscuridad, simplemente creo una nueva capa (fondo blanco) y la ubico entre estas dos que ya tenía, le doy color negro y en la barra de transparencia (esquina superior derecha) la muevo hacia donde logre el efecto deseado.

      Saludos y gracias por el comentario 🙂

           Roberto Evolucionando Santana dijo

        Grande!!

      Manuel de la Fuente dijo

    Si el proceso es de un programa que se encuentra visible, nada más cómodo que tipear xkill en la consola, clic sobre el programa a matar, y listo.

         KZKG^Gaara dijo

      clic sobre el programa a matar
      jeje síp… eso suponiendo que se cuente con GUI jeje.

           Manuel de la Fuente dijo

        Así es, por eso dije «si el proceso es de un programa que se encuentra visible».

             Windóusico dijo

          Es más fácil hacer clic sobre el botón con la «X». GNOME Shell todavía tiene ese botón ¿No? :-D.

               Manuel de la Fuente dijo

            Si el programa se encuentra congelado (que es la razón principal por la que necesitarías matar su proceso) es lógico que ese botón no responderá por más que lo presiones.

            Creo que GNOME Shell lo quitará pronto para que vean la maravilla táctil que es cerrar ventanas arrastrándolas hasta la parte inferior de la pantalla como en Windows 8. Ni qué decir que en monitores panorámicos es un ejercicio fantástico.

               Windóusico dijo

            Ahora lo entiendo. En ese caso prefiero Control+Alt+Esc (en KDE).

            Estoy deseando ver los nuevos adelantos de GNOME Shell, son una auténtica delicia.

      proper dijo

    Esto hace lo mismo pero se escribe menos.
    En este caso tomé a leafpad como ejemplo por eso aparece leaf en el grep
    ps -e | grep leaf | awk '{print $1}' | xargs kill

    Saludos

      Sys dijo

    ¡Uf! Hijo mío, prueba a ejecutar «pgrep kat», que para algo está «pgrep».

    Y a ejecutar «man pgrep». Y «man pidof», que en algunas ocasiones te puede servir «pidof».

    Y a ejecutar «ps aux | grep [k]at», que no te devolverá como resultado «el proceso que activamos para el filtrado» que comentas, con lo que te ahorras trabajo.

    ¡Saludos!

         Sys dijo

      Ah, y «pkill», que hace lo que estáis buscando. Por ejemplo: «pkill kat».

         KZKG^Gaara dijo

      Oh, interesante… no conocía pgrep 🙂
      Gracias por el tip 😀

           Sys dijo

        Gracias a ti y a tus artículos.

        Por cierto, en https://flossblog.wordpress.com/2009/11/11/truco-del-dia-excluir-al-proceso-grep-en-la-salida-de-ps-aux/ comentan sobre la técnica de usar órdenes como «ps aux | grep [n]ombre_del_programa», allí lo explican mejor que yo.

        ¡Saludos!

             KZKG^Gaara dijo

          Gracias por el link 😀
          Eso es lo genial de que exista DesdeLinux… que no importa si eres usuario, redactor o admin, siempre todos aprendemos cosas nuevas 🙂

          Saludos y gracias de nuevo amigo.

      koste dijo

    Muchas gracias a todos, por el tiempo y dedicación, hace que merezca la pena visitar y leer este sitio varias veces al día.

    Gracias otra vez.

      Mr Linux. dijo

    A KZKG^Gaara casi siempre le pasa lo mismo ,cuando se trata de esta clase de tips , hay otra persona que hace lo mismo con un sencillo comando. Pero lo felicito siempre está continuamente aportando.

         KZKG^Gaara dijo

      jeje sip… yo sé hacer X osa y vengo acá y comparto el método, pero luego comparten una forma más simple de lograr lo mismo jajaja, pero con esto todos ganamos ¿o no? 😀

           truko22 dijo

        Así es 0/

           Manuel de la Fuente dijo

        Jajajaja, siempre te vas por la forma más complicada. 😀

             KZKG^Gaara dijo

          JAJAJA sí, es que siempre he pensado: «Si sé hacerlo de la forma más difícil, entonces sabré aprender a hacerlo de la forma simple sin problemas.» Y… viceversa no funciona igual jajaja.

      Oscar dijo

    El problema sería si tenemos dos procesos con un nombre similar.
    Por ejemplo, un proceso de kate, y otro proceso de … mmm… digamos kater xD
    Con dicho comando, mataríamos a los dos, ¿cierto?

         KZKG^Gaara dijo

      Pues síp, eso sucedería 🙂

      truko22 dijo

    T-T pobre kate. Yo uso es xkill en KDE se lanza rápido con «ctrl+alt+esc» o también con «ctrl + Esc» abre «Actividades del Sistema» y realizarlo gráficamente. Ahora este procedimiento mediante la terminal hay que aprenderlo, aunque tengo un server casero con debian estable y eso no se cuelga para nada.

      Yulian dijo

    Genial! justo ahora que llevo el curso de sistemas operativos y necesito realizar tareas con el terminal tu tutorial me fue de gran ayuda ! gracias

      pablo dijo

    Muy bien explicado, genial el blog lo acabo de conocer, lo apunto a favoritos. Gracias.

      Anon dijo

    Pues está bueno, aunque hay algunas veces en que no se pueden matar….

      Dcoy dijo

    pkill -9

         Dcoy dijo

      pkill -9 «nombre del proceso»
      en el coment anterior le puse «» pero no salio xD

      itobest dijo

    buenas noches, tengo tiempo leyendo sus feed y hoy me decidí probar este comando ps ax | grep chrome | grep -v grep | awk ‘{print $1}’ | xargs kill y me tope con el siguiente error kill: cannot find process «?» con la poca experiencia que poseo en bash decidí realizarle algunas modificaciones y al final me quedo ps -A | grep c | grep -v grep | awk ‘{print $1}’ | xargs kill dado que para mostrar todos los procesos de forma resumida se usa ps -A y la segunda anomalía era que me lanzaba el TTY «?» y me funciono muchas gracias me gusta mucho su blog, saludos

      Michael dijo

    Gracias compa no te imaginas la cantidad de problemas que me acabas de resolver con este comando.

    Saludos!!

      emalug dijo

    GRACIAS !!!!

      Arturo dijo

    Excelente post. Justo lo que andaba buscando y no sabía como hacerlo, ha y la explicación muy buena.

    Saludos.