1 votos

¿Cómo puedo matar un proceso desde el Terminal utilizando el nombre de la ventana visible?

Esta pregunta es similar en espíritu a ¿Cómo puedo matar un proceso por su nombre? pero no un duplicado por la razón que se expone a continuación.

Como ejemplo, aquí está cómo aparece IntelliJ en el Monitor de Actividad:

enter image description here

El nombre es "IntelliJ IDEA". Este es también el nombre visible cuando se cambia a Windows. Sin embargo, ps aux mostrará el nombre del proceso como idea porque ese es el nombre del proceso que se está ejecutando:

/Aplicaciones/IntelliJ IDEA.app/Contenidos/MacOS/ idea

Mecanografía pkill -i intellij no hace nada, ya que hay que escribir pkill -i idea para matar realmente el proceso correcto. Pero, ¿hay alguna forma de hacerlo sin tener que buscar primero el nombre del proceso correcto? Me gustaría escribir kill_by_visible_name intellij y ver el proceso terminado.

Una opción es ejecutar ps aux | grep -i intellij pero esto también encontrará los procesos que se ejecutan desde una carpeta llamada "IntelliJ", no sólo el proceso real de IntelliJ. Esto también fallará para los procesos donde el nombre visible no es el mismo que el nombre de la carpeta de la aplicación. Otra opción es buscar el PID en el Monitor de Actividad, pero esto consume mucho tiempo cuando ya se conoce el nombre de la aplicación.

4voto

JonathanReez Puntos 168

Descubrí que esto es posible usando lsappinfo :

#!/bin/bash
if [ -z "$1" ]
then
      echo "Please provide a process name"
      exit
fi
apps_list=$(lsappinfo)
found_line_numbers=$(echo "$apps_list"  | grep -nE '([0-9]+\) "[a-zA-Z ]+")' | grep -i "$1" | awk '{print $1}' FS=":")
if [ -z "$found_line_numbers" ]
then
      echo "Process named $1 not found"
else
      while IFS= read -r line; do
        line_pid=$(echo "$apps_list" | tail -n +$line | head -n 5 | grep pid | awk -F ' ' '{print $3}')
        echo "Trying to kill process $line_pid"
        kill -9 "$line_pid"
      done <<< "$found_line_numbers"
fi

El combo grep/awk es un poco incómodo, pero no encontré nada mejor para extraer el PID de lsappinfo .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X