J'essaie de compter le nombre de fenêtres de shell ou de terminal en cours d'exécution.
j'ai essayé ps a|grep bash;
ps a|grep tty;
Mais cela peut être inexact.
J'essaie de compter le nombre de fenêtres de shell ou de terminal en cours d'exécution.
j'ai essayé ps a|grep bash;
ps a|grep tty;
Mais cela peut être inexact.
Réponses:
ls /dev/pts/ | wc -l
Utilisez la commande ci-dessus pour compter les fenêtres de terminal ouvertes.
Pour les lister:
ps aux | awk '{print $7}' | grep -v "?"
Pour les compter:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
Vous devrez soustraire 1 de ce nombre car il inclut l'en-tête TTY supérieur.
Tout dépend si vous voulez compter le nombre de sous-shells en cours d'exécution ou si vous voulez compter le nombre de fenêtres de terminal ouvertes.
Pour compter uniquement les fenêtres de terminal, vous devez utiliser:
ls /dev/pts/ | wc -l (stated in a previous answer)
Par exemple:
Sur mon système, il y a actuellement six tty disponibles. J'ai également un terminal ouvert pts / 0 qui a 4 processus en cours d'exécution dans le fg ou le bg.
root 4565 0.0 0.0 4060 576 tty1 Ss+ May01 0:00 /sbin/mingetty /dev/tty1
root 4567 0.0 0.0 4060 572 tty2 Ss+ May01 0:00 /sbin/mingetty /dev/tty2
root 4569 0.0 0.0 4060 568 tty3 Ss+ May01 0:00 /sbin/mingetty /dev/tty3
root 4571 0.0 0.0 4060 576 tty4 Ss+ May01 0:00 /sbin/mingetty /dev/tty4
root 4573 0.0 0.0 4060 576 tty5 Ss+ May01 0:00 /sbin/mingetty /dev/tty5
root 4575 0.0 0.0 4060 572 tty6 Ss+ May01 0:00 /sbin/mingetty /dev/tty6
me 17482 0.0 0.0 110236 1136 pts/0 R+ 11:36 0:00 ps aux
root 20374 0.0 0.0 108336 1816 pts/0 Ss May23 0:00 -bash
root 20953 0.0 0.1 161436 1960 pts/0 S May23 0:00 su - me
me 20954 0.0 0.1 108524 1984 pts/0 S May23 0:00 -bash
Si vous souhaitez supprimer les processus enfants d'arrière-plan, il vous suffit de diriger vers uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Vous devez toujours soustraire 1 pour le titre d'en-tête de TTY, mais vous pouvez encore améliorer cela en supprimant complètement le tty car il semble que vous ne vous en souciez pas de toute façon.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Cela vous donnera un décompte précis.
ÉDITER
En y pensant plus, «ps -a» fonctionnerait mieux et vous pouvez laisser de côté le premier grep.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
et awk
est redondant, utilisez awk '/pattern/
; et cela ne fonctionne pas sur ma machine - il rapporte 19 quand j'en ai 1.
Sur macos, vous pouvez utiliser:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Trouvé ici: /programming//a/6180547/6320039
expect
une session utilisateur émulée,xterm
ne pas exécuter un shell, etc., compte?