Sto cercando di contare quante finestre shell o terminali sono attualmente in esecuzione.
Provai ps a|grep bash;
ps a|grep tty;
Ma può essere inaccurato.
Sto cercando di contare quante finestre shell o terminali sono attualmente in esecuzione.
Provai ps a|grep bash;
ps a|grep tty;
Ma può essere inaccurato.
Risposte:
ls /dev/pts/ | wc -l
Utilizzare il comando sopra per contare le finestre del terminale aperte.
Per elencarli:
ps aux | awk '{print $7}' | grep -v "?"
Per contarli:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
Dovrai sottrarre 1 da quel numero in quanto include l'intestazione TTY superiore.
Tutto dipende se si desidera contare quante sub shell sono in esecuzione o se si desidera contare quante finestre dei terminali sono aperte.
Per contare solo le finestre del terminale dovresti usare:
ls /dev/pts/ | wc -l (stated in a previous answer)
Per esempio:
Sul mio sistema ci sono attualmente sei tty disponibili. Ho anche un terminale aperto pts / 0 che ha 4 processi in esecuzione in fg o 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
Se si desidera rimuovere i processi figlio in background, eseguire il pipe su uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Devi ancora sottrarre 1 per il titolo dell'intestazione di TTY, ma puoi migliorarlo ulteriormente eliminando del tutto i tty perché sembra che non ti interessi comunque.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Questo ti darà un conteggio accurato.
MODIFICARE
Pensandoci più 'ps -a' funzionerebbe meglio e puoi tralasciare il primo grep.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
ed awk
è ridondante, utilizzare awk '/pattern/
; e questo non funziona sulla mia macchina - riporta 19 quando ho 1.
Su macos puoi usare:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Trovato qui: https://stackoverflow.com/a/6180547/6320039
expect
una sessione utente emulata,xterm
non esegue una shell, ecc.?