Was ist Ihre Definition des Terminalfensters ? Zählen ein Gnome-Terminal-Tab, ein virtuelles Terminal, eine Person, die sich über ssh anmeldet, ein Bildschirm- / tmux-Fenster, eine expectemulierte Benutzersitzung, die xtermkeine Shell ausführt usw.?
Stéphane Chazelas
1
Terminalfenster mit "Strg-Alt-T" geöffnet. Ich habe es gelöst, indem ich gezählt habe, wie viele "Punkte" in> who command who | grep "pts" | wc -l
Martincho
Antworten:
6
ls /dev/pts/| wc -l
Verwenden Sie den obigen Befehl, um die geöffneten Terminalfenster zu zählen.
Versuchte das. Es zeigt 23. Und ich habe nur ein Terminal / Bash-Fenster geöffnet.
Martincho
@ user68957 Befinden Sie sich zufällig auf einem gemeinsam genutzten Computer mit mehreren Benutzern?
Chirag Bhatia - chirag64
Ein Heimcomputer, jeweils ein Benutzer. Der Trick wäre zu zählen, wie viele Terminalfenster oder Terminalprozesse geöffnet sind. Wenn ich ein> who mache, werden zwei Benutzer aufgelistet: 0 yyyy-mm-tt hh-mm (: 0) me pts / 0 jjjj-mm-tt hh-mm (: 0) Wenn ich ein anderes Terminalfenster öffne, mit > wen es zeigt: ich: 0 jjjj-mm-tt hh-mm (: 0) ich pts / 0 jjjj-mm-tt hh-mm (: 0) ich pts / 1 jjjj-mm-tt hh-mm (: 0) Soll ich nur "pts /" greifen?
Martincho
2
Um sie aufzulisten:
ps aux | awk '{print $7}'| grep -v "?"
Um sie zu zählen:
ps aux | awk '{print $7}'| grep -v "?"| wc -l
Sie müssen 1 von dieser Zahl abziehen, da sie den oberen TTY-Header enthält.
Dies hängt alles davon ab, ob Sie zählen möchten, wie viele Sub-Shells ausgeführt werden, oder ob Sie zählen möchten, wie viele Terminalfenster geöffnet sind.
Um nur die Terminalfenster zu zählen, müssten Sie Folgendes verwenden:
ls /dev/pts/| wc -l (stated in a previous answer)
Beispielsweise:
Auf meinem System sind derzeit sechs tty verfügbar. Ich habe auch ein Terminal offen pts / 0, das 4 Prozesse in der fg oder bg laufen.
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
Wenn Sie die untergeordneten Hintergrundprozesse entfernen möchten, leiten Sie sie einfach an uniq weiter:
Sie müssen noch 1 für den Header-Titel von TTY subtrahieren, aber Sie können dies weiter verbessern, indem Sie die Tty's ganz herausnehmen, da es so aussieht, als ob Sie sich sowieso nicht um diese kümmern.
grepund awkist redundant, verwenden awk '/pattern/; und das funktioniert nicht auf meiner Maschine - es meldet 19, wenn ich 1. habe
Jasonwryan
Ich bin etwas verwirrt. Im Moment bin ich auf Ubuntu 14. Es ist nur ein Terminal / Bash-Fenster geöffnet. Mit den Abobe-Befehlen erhalte ich 23 oder 13, wenn ich 1 oder 2 erhalten soll, falls ich ein anderes Terminal mit Strg-Alt-T öffne
Martincho
Dieser erste Befehl zählt
untergeordnete
@ Jasonwryan - Es funktioniert gut bei mir. Die Verwendung von grep mit awk ist die Präferenz einer Person. Wenn es jemandem leichter fällt, das Ganze in awk zu machen, ist das in Ordnung.
Jeight
"Bei mir funktioniert es einwandfrei" begründet Ihre Antwort kaum ... Vielleicht könnten Sie einige Details zu "Ihrem" hinzufügen, damit die Leute wissen, dass es nur für dieses System gilt.
expect
emulierte Benutzersitzung, diexterm
keine Shell ausführt usw.?Antworten:
Verwenden Sie den obigen Befehl, um die geöffneten Terminalfenster zu zählen.
quelle
Um sie aufzulisten:
Um sie zu zählen:
Sie müssen 1 von dieser Zahl abziehen, da sie den oberen TTY-Header enthält.
Dies hängt alles davon ab, ob Sie zählen möchten, wie viele Sub-Shells ausgeführt werden, oder ob Sie zählen möchten, wie viele Terminalfenster geöffnet sind.
Um nur die Terminalfenster zu zählen, müssten Sie Folgendes verwenden:
Beispielsweise:
Auf meinem System sind derzeit sechs tty verfügbar. Ich habe auch ein Terminal offen pts / 0, das 4 Prozesse in der fg oder bg laufen.
Wenn Sie die untergeordneten Hintergrundprozesse entfernen möchten, leiten Sie sie einfach an uniq weiter:
Sie müssen noch 1 für den Header-Titel von TTY subtrahieren, aber Sie können dies weiter verbessern, indem Sie die Tty's ganz herausnehmen, da es so aussieht, als ob Sie sich sowieso nicht um diese kümmern.
Das gibt Ihnen eine genaue Zählung.
BEARBEITEN
Wenn Sie mehr darüber nachdenken, würde 'ps -a' besser funktionieren und Sie können den ersten grep weglassen.
quelle
grep
undawk
ist redundant, verwendenawk '/pattern/
; und das funktioniert nicht auf meiner Maschine - es meldet 19, wenn ich 1. habeAuf Macos können Sie verwenden:
Hier zu finden: /programming//a/6180547/6320039
quelle
Du könntest es tun
$ pgrep bash
Das kannst du auch
$ W
quelle