Quelle est votre définition de la fenêtre de terminal ? Est-ce qu'un onglet gnome-terminal, un terminal virtuel, une personne qui se connecte via ssh, un panneau screen / tmux, expectune session utilisateur émulée, xtermne pas exécuter un shell, etc., compte?
Stéphane Chazelas
1
La fenêtre du terminal s'est ouverte avec "ctrl-alt-t". Je l'ai résolu en comptant combien de "pts" sont dans> qui commandent qui | grep "pts" | wc -l
Martincho
Réponses:
6
ls /dev/pts/| wc -l
Utilisez la commande ci-dessus pour compter les fenêtres de terminal ouvertes.
J'ai essayé ça. Il montre 23. Et je n'ai qu'une seule fenêtre de terminal / bash ouverte.
Martincho
@ user68957 Êtes-vous sur un ordinateur partagé avec plusieurs utilisateurs par hasard?
Chirag Bhatia - chirag64
Un ordinateur personnel, un utilisateur à la fois. L'astuce serait de compter le nombre de fenêtres de terminal ouvertes ou de processus de terminal. Si je fais un> qui, il répertorie deux utilisateurs moi: 0 aaaa-mm-jj hh-mm (: 0) me pts / 0 aaaa-mm-jj hh-mm (: 0) Si j'ouvre une autre fenêtre de terminal, avec > qui il montre: moi: 0 aaaa-mm-jj hh-mm (: 0) me pts / 0 aaaa-mm-jj hh-mm (: 0) me pts / 1 aaaa-mm-jj hh-mm (: 0) Dois-je simplement grep "pts /"?
Martincho
2
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 45650.00.04060576 tty1 Ss+May010:00/sbin/mingetty /dev/tty1
root 45670.00.04060572 tty2 Ss+May010:00/sbin/mingetty /dev/tty2
root 45690.00.04060568 tty3 Ss+May010:00/sbin/mingetty /dev/tty3
root 45710.00.04060576 tty4 Ss+May010:00/sbin/mingetty /dev/tty4
root 45730.00.04060576 tty5 Ss+May010:00/sbin/mingetty /dev/tty5
root 45750.00.04060572 tty6 Ss+May010:00/sbin/mingetty /dev/tty6
me 174820.00.01102361136 pts/0 R+11:360:00 ps aux
root 203740.00.01083361816 pts/0SsMay230:00-bash
root 209530.00.11614361960 pts/0 S May230:00 su - me
me 209540.00.11085241984 pts/0 S May230:00-bash
Si vous souhaitez supprimer les processus enfants d'arrière-plan, il vous suffit de diriger vers uniq:
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.
grepet awkest redondant, utilisez awk '/pattern/; et cela ne fonctionne pas sur ma machine - il rapporte 19 quand j'en ai 1.
jasonwryan
Je suis un peu confus. En ce moment, je suis sur Ubuntu 14. Il n'y a qu'une seule fenêtre terminal / bash ouverte. Avec les commandes abobe, j'obtiens 23 ou 13, quand je devrais obtenir 1 ou 2 au cas où j'ouvrirais un autre terminal avec ctrl-alt-t
Martincho
Cette première commande compte les processus enfants s'exécutant dans des shells en arrière-plan et pas seulement les sessions terminales ouvertes
Jeight
@jasonwryan - Cela fonctionne très bien sur le mien. Utiliser grep avec awk est la préférence de la personne. Si quelqu'un est plus à l'aise de faire le tout en awk, c'est bien.
Jeight
"Cela fonctionne très bien sur le mien" ne justifie guère votre réponse ... Peut-être pourriez-vous inclure quelques détails sur ce qu'est "le vôtre" pour que les gens sachent qu'il ne s'applique qu'à ce système.
expect
une session utilisateur émulée,xterm
ne pas exécuter un shell, etc., compte?Réponses:
Utilisez la commande ci-dessus pour compter les fenêtres de terminal ouvertes.
la source
Pour les lister:
Pour les compter:
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:
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.
Si vous souhaitez supprimer les processus enfants d'arrière-plan, il vous suffit de diriger vers uniq:
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.
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.
la source
grep
etawk
est redondant, utilisezawk '/pattern/
; et cela ne fonctionne pas sur ma machine - il rapporte 19 quand j'en ai 1.Sur macos, vous pouvez utiliser:
Trouvé ici: /programming//a/6180547/6320039
la source
Vous pourriez faire
$ pgrep bash
Vous pouvez aussi faire
$ W
la source