1 votes

Comment puis-je tuer un processus à partir du Terminal en utilisant le nom de la fenêtre visible ?

Cette question est similaire dans son esprit à Comment puis-je tuer un processus par son nom ? mais pas un double pour la raison suivante.

À titre d'exemple, voici comment IntelliJ apparaît dans Activity Monitor :

enter image description here

Le nom est "IntelliJ IDEA". C'est également le nom visible lorsque vous faites basculer Windows. Cependant, ps aux affichera le nom du processus comme idea car c'est le nom du processus en cours d'exécution :

/Applications/IntelliJ IDEA.app/Contenu/MacOS/ idée

Dactylographie pkill -i intellij ne fait rien, car vous devez taper pkill -i idea pour tuer le bon processus. Mais existe-t-il un moyen de le faire sans avoir à chercher d'abord le nom du bon processus ? J'aimerais taper kill_by_visible_name intellij et voir le processus se terminer.

Une option consiste à exécuter ps aux | grep -i intellij mais cela trouvera également les processus qui s'exécutent à partir d'un dossier nommé "IntelliJ", et pas seulement le processus IntelliJ lui-même. Cela échouera également pour les processus dont le nom visible n'est pas le même que le nom du dossier de l'application. Une autre option consiste à rechercher le PID dans Activity Monitor, mais cela prend du temps lorsque vous connaissez déjà le nom de l'application.

5voto

JonathanReez Points 1024

J'ai découvert que c'était possible en utilisant 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

Le combo grep/awk est un peu maladroit, mais je n'ai pas trouvé mieux pour extraire le PID de lsappinfo .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X