Я намагаюся підрахувати, скільки зараз працює вікон оболонок або терміналів.
я намагався 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)
Наприклад:
Наразі в моїй системі доступно шість тисяч. У мене також є один відкритий термінал 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, але ви можете додатково покращити це, вийнявши цілий ряд, оскільки, здається, вам це все одно не важливо.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Це дасть точну підрахунок.
EDIT
Якщо подумати про це, більше 'ps -a' буде працювати краще, і ви можете залишити перший греп.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
і awk
є зайвим, використовувати awk '/pattern/
; і це не працює на моїй машині - вона повідомляє 19, коли у мене є 1.
На macos можна використовувати:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Знайдено тут: https://stackoverflow.com/a/6180547/6320039
expect
імітується сеанс користувача,xterm
не працює оболонка тощо