Come contare quanti shell / terminali sono in esecuzione?


10

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.


Qual è la tua definizione di finestra terminale ? Conta una scheda gnome-terminal, un terminale virtuale, una persona che accede tramite ssh, un riquadro screen / tmux, expectuna sessione utente emulata, xtermnon esegue una shell, ecc.?
Stéphane Chazelas,

1
Finestra del terminale aperta con "ctrl-alt-t". Ho risolto contando il numero di "pts" presenti in> who command who | grep "pts" | wc -l
Martincho,

Risposte:


6
ls /dev/pts/  | wc -l

Utilizzare il comando sopra per contare le finestre del terminale aperte.


Ci ho provato. Mostra 23. E ho solo una finestra terminale / bash aperta.
Martincho,

@ user68957 Sei per caso su un computer condiviso con più utenti?
Chirag Bhatia - chirag64

Un computer di casa, un utente alla volta. Il trucco sarebbe contare quante finestre dei terminali sono aperte o processi terminali. Se faccio un> who, mi elenca due utenti: 0 yyyy-mm-gg hh-mm (: 0) me pts / 0 yyyy-mm-gg hh-mm (: 0) Se apro un'altra finestra del terminale, con > chi mostra: me: 0 yyyy-mm-gg hh-mm (: 0) me pts / 0 yyyy-mm-gg hh-mm (: 0) me pts / 1 yyyy-mm-gg hh-mm (: 0) Devo solo grep "pts /"?
Martincho,

2

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

greped awkè ridondante, utilizzare awk '/pattern/; e questo non funziona sulla mia macchina - riporta 19 quando ho 1.
jasonwryan

Sono un po 'confuso. In questo momento, sono su Ubuntu 14. C'è solo una finestra terminale / bash aperta. Con i comandi abobe, ottengo 23 o 13, quando dovrei ottenere 1 o 2 nel caso in cui apro un altro terminale con ctrl-alt-t
Martincho,

Quel primo comando conta i processi
secondari

@jasonwryan - Funziona benissimo sul mio. Usare grep con awk è la preferenza della persona. Se qualcuno è più a suo agio nel fare tutto in awk, allora va bene.
Jeight

"Funziona benissimo sulla mia" difficilmente conferma la tua risposta ... Forse potresti includere alcuni dettagli di ciò che "tuo" è così le persone sono consapevoli che si applica solo a quel sistema.
jasonwryan,


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.