Как подсчитать количество запусков оболочки / терминалов?

Я пытаюсь подсчитать количество окон оболочки или терминалов в настоящее время.

Я попробовал ps a|grep bash; ps a|grep tty;

Но это может быть неточно.

 ls /dev/pts/ | wc -l 

Используйте приведенную выше команду для подсчета окон терминала.

Чтобы перечислить их:

 ps aux | awk '{print $7}' | grep -v "?" 

Чтобы посчитать их:

 ps aux | awk '{print $7}' | grep -v "?" | wc -l 

Вам нужно будет вычесть 1 из этого числа, так как он включает верхний заголовок TTY.

Все это зависит от того, хотите ли вы подсчитать, сколько подклассов запущено, или если вы хотите подсчитать, сколько окон терминала открыто.

Чтобы подсчитать только окна терминала, вам нужно будет использовать:

 ls /dev/pts/ | wc -l (stated in a previous answer) 

Например:

В моей системе в настоящее время доступно шесть tty. У меня также есть один открытый терминал pts / 0, который имеет 4 процесса, выполняющихся в fg или 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 

Если вы хотите удалить фоновые дочерние процессы, тогда просто подключитесь к uniq:

 ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l 

Вы все равно должны вычесть 1 для заголовка TTY, но вы можете еще больше улучшить это, вытащив tty в целом, поскольку кажется, что вы все равно не заботитесь о них.

 ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq 

Это даст вам точный счет.

РЕДАКТИРОВАТЬ

Думать об этом больше «ps -a» будет работать лучше, и вы можете оставить первый grep.

 ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l