Я пытаюсь подсчитать, сколько окон оболочки или терминала работает в данный момент.
Я старался ps a|grep bash;
ps a|grep tty;
Но это может быть неточным.
Я пытаюсь подсчитать, сколько окон оболочки или терминала работает в данный момент.
Я старался 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
grep
и awk
является излишним, использовать awk '/pattern/
; и это не работает на моей машине - он сообщает 19, когда у меня есть 1.
На макос вы можете использовать:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Найдено здесь: https://stackoverflow.com/a/6180547/6320039
expect
,xterm
выполняющее вход через ssh, панель screen / tmux, эмулируемый сеанс пользователя, отсутствие запуска оболочки и т. Д.?