Lorsque j'essaie de fermer un onglet dans Gnome Terminal, il indique:
Fermer ce terminal? Un processus est toujours en cours d'exécution dans ce terminal. Fermer le terminal va le tuer.
Comment puis-je savoir ce qui fonctionne encore? Notez qu'il n'y a rien dans la sortie de jobs
name__. Merci.
ps T
Sélectionne tous les processus associés au terminal.
Si vous avez démarré un processus dans un terminal (par exemple, gedit), l'ID de processus (PID) (de bash) et l'ID de processus parent (PPID) (de gedit) pour ces deux processus seront identiques. Ceci peut être vu dans la sortie de
ps -ef
commander. Pour le rendre plus lisible, commençons par "canaliser" la sortie vers grep
pour trouver le PID de tous les processus "bash" en cours d'exécution et ensuite "rediriger" vers awk
. awk
sélectionne uniquement les champs PID et nom du processus (champs 2 et 8) et les affiche à l'écran.
ps -ef | grep bash | awk '{print $2 ": " $8}'
Le nombre dans la sortie est PID. Vous allez l'utiliser pour trouver quel processus a été démarré dans le terminal qui a ce PID. Notez qu'il peut y avoir plusieurs lignes de sortie si plusieurs terminaux sont ouverts. Maintenant, pour trouver les processus "enfants" (le cas échéant) de ce terminal-sessions, nous pouvons utiliser cette commande:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Vous devez entrer le numéro PID à la place de EnterPID dans la dernière commande. S'il existe plus d'un PID pour "bash", vous devez tous les essayer.
La dernière commande ne fait que regarder la sortie de ps -ef
et recherche si le PID (que vous avez trouvé dans la commande précédente) et le PPID sont identiques pour tous les processus.
Plus d'informations:
Vous pouvez avoir un aperçu des processus qui répertorient le PID de votre Shell en tant que parent. Comme vous le savez peut-être ou non, nous pouvons spécifier le format ps
SHELLPID=$$ ; ps -e -o cmd,pid,ppid | awk -v Shell=$SHELLPID '$NF~Shell'
Ici, nous obtenons le PID du shell de la variable spéciale $$
dans SHELLPID
, qui peut ensuite être utilisé par awk dans le sous-shell du tuyau. Essentiellement, nous ne faisons que répertorier les processus dans le formulaire NOM, le PID, le PID parent et filtrons uniquement ceux qui ont le PID approprié dans la dernière colonne.