Lorsque j'essaie de fermer un onglet dans Gnome Terminal, il dit:
Fermer ce terminal? Un processus est toujours en cours d'exécution sur ce terminal. La fermeture du terminal le tuera.
Comment savoir ce qui fonctionne toujours? Notez qu'il n'y a rien dans la sortie de jobs
. Merci.
screen
,tmux
,script
,ssh
,mc
et tourné les panneaux hors, ou tout simplement une autre coquille par exemple taperbash
, ou quelque chose dans ce sens. Appuyez sur Ctrl + D ou tapezexit
pour quitter votre shell, vous verrez où vous vous retrouvez.exit
, l'onglet du terminal gnome ne se ferme pas.exit
fermera probablement alors. @egmont pouvez-vous déplacer ceci vers une réponse s'il vous plaît.Réponses:
Sélectionne tous les processus associés au terminal.
la source
nohup
commande sont déconnectés du terminal, ne bloquez donc pas sa fermeture. Mais ils sont toujours répertoriés avec cette commande.Vous pouvez prendre un aperçu des processus qui répertorient le PID de votre shell en tant que parent. Comme vous le savez ou non, nous pouvons spécifier le
ps
formatIci, nous obtenons le PID du shell à partir de la variable spéciale
$$
dansSHELLPID
, qui peut ensuite être utilisé par awk dans le sous-shell de pipe. Essentiellement, nous listons simplement les processus sous la forme NAME, PID, Parent PID et filtrons uniquement ceux qui ont le PID approprié dans la dernière colonne.la source
Si vous avez démarré un processus dans le 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 les mêmes. Cela peut être vu dans la sortie de
commander. Pour le rendre plus lisible, nous allons tout d'abord "diriger" la sortie vers
grep
pour trouver le PID de tous les processus "bash" en cours d'exécution et ensuite la "rediriger" versawk
. Leawk
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 l'utiliserez 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 ces sessions terminales, nous pouvons utiliser cette commande:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Vous devez entrer le numéro PID à la place d'EnterPID dans la dernière commande. S'il y a plus d'un PID pour "bash", vous devez tous les essayer.
La dernière commande regarde simplement la sortie de
ps -ef
et recherche si PID (que vous avez trouvé à partir de la commande précédente) et PPID sont les mêmes pour n'importe quel processus.Plus d'informations:
homme ps
homme awk
la source
Vous pouvez utiliser
htop
. Dans Ubuntu 16.04 (et supérieur), vous pouvez l'installer simplement en tapantsudo apt-get install htop
.Vous pouvez également utiliser
top
.la source
htop
?