Як порахувати, скільки працює оболонки / терміналів?


10

Я намагаюся підрахувати, скільки зараз працює вікон оболонок або терміналів.

я намагався ps a|grep bash; ps a|grep tty;

Але це може бути неточним.


Яке визначення термінального вікна ? Чи враховується вкладка gnome-terminal, віртуальний термінал, людина, що входить через ssh, панель екрана / tmux, expectімітується сеанс користувача, xtermне працює оболонка тощо
Стефан Шазелас

1
Вікно терміналу відкрилося з "ctrl-alt-t". Я вирішив це, порахувавши, скільки "балів" у> хто командує, хто | grep "pts" | wc -l
Martincho

Відповіді:


6
ls /dev/pts/  | wc -l

Використовуйте вищезазначену команду для підрахунку відкритих вікон терміналів.


Спробував це. Це показує 23. І у мене відкрите лише одне вікно терміналу / баш.
Мартинчо

@ user68957 Ви випадково перебуваєте на спільному комп'ютері з кількома користувачами?
Chirag Bhatia - chirag64

Один домашній комп'ютер, один користувач одночасно. Хитрість полягає в тому, щоб порахувати, скільки вікон терміналів відкрито, або термінальних процесів. Якщо я> хто, він перераховує мені двох користувачів: 0 yyyy-mm-dd hh-mm (: 0) мені pts / 0 yyyy-mm-dd hh-mm (: 0) Якщо я відкрию інше вікно терміналу, з > хто це показує: мені: 0 yyyy-mm-dd hh-mm (: 0) me pts / 0 yyyy-mm-dd hh-mm (: 0) мені pts / 1 yyyy-mm-dd hh-mm (: 0) Чи варто просто грепнути "pts /"?
Мартинчо

2

Щоб перелічити їх:

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.
Jasonwryan

Я трохи розгублений. Зараз я перебуваю на Ubuntu 14. Відкрите лише одне вікно терміналу / баш. За допомогою команд abbobe я отримую 23 або 13, коли мені потрібно отримати 1, або 2, якщо я відкрию інший термінал ctrl-alt-t
Martincho

Ця перша команда підраховує дитячі процеси, що працюють у оболонках у фоновому режимі, а не просто відкриті термінальні сеанси
Jeight

@jasonwryan - Це добре працює на моєму. Використання грепу з awk є перевагою людини. Якщо комусь зручніше робити цю справу в курсі, то це добре.
Jeight

"Це добре працює на моєму" навряд чи підтверджує вашу відповідь ... Можливо, ви могли б включити якусь детальну інформацію про те, що "ваше", щоб люди знали, що це стосується лише цієї системи.
Jasonwryan


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.