Intereting Posts
Как работает modprobe перед монтированием root? (без инициализации) Debian Squeeze больше не загружается OpenSuse – сетевые проблемы «Виртуальный киоск SSH». Работает ли «PermitEmptyPasswords yes»? – Как сделать пользователя ssh с пустым паролем, чтобы случайные пользователи могли его использовать? udhcpd.service запущен, но процесс udhcpd не работает замените пустые поля на выходе «grep» на строку shell-скрипт для имени файла chmod, но только для новых файлов с момента последнего запуска скрипта Копирование текста с хоста на Vbox конвертировать временную метку в форматированное время OSX Сценарий инициализации не вызывается при выключении grub2 не может найти новое ядро Редактировать меню Grub без дополнительных инструментов Разделение привилегий в Solaris 11.3 и SSHD GRUB не уходит, когда я пытаюсь удалить Linux из двойной загрузки Windows 10 / Xubuntu Automount в Xfce4 просто перестала работать

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

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

Я попробовал 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