Как вы определяете окно терминала ? Имеют ли значение вкладка gnome-терминал, виртуальный терминал, лицо expect, xtermвыполняющее вход через ssh, панель screen / tmux, эмулируемый сеанс пользователя, отсутствие запуска оболочки и т. Д.?
Стефан Шазелас
1
Окно терминала открывается с помощью "Ctrl-Alt-T". Я решил это, посчитав, сколько «pts» находится в> команде, которая | grep «pts» | wc -l
Martincho
Ответы:
6
ls /dev/pts/| wc -l
Используйте приведенную выше команду для подсчета открытых окон терминала.
Попробовал это. Это показывает 23. И у меня есть только одно открытое окно терминала / bash.
Мартиньо
@ user68957 Вы случайно не используете общий компьютер с несколькими пользователями?
Чираг Бхатия - чираг64
Один домашний компьютер, один пользователь одновременно. Хитрость заключается в подсчете количества открытых окон терминала или процессов терминала. Если я сделаю a> who, он перечислит двух пользователей me: 0 гггг-мм-дд чч-мм (: 0) me pts / 0 гггг-мм-дд чч-мм (: 0) если я открою другое окно терминала, с > кто это показывает: me: 0 гггг-мм-дд чч-мм (: 0) me pts / 0 гггг-мм-дд чч-мм (: 0) me pts / 1 гггг-мм-дд чч-мм (: 0) Должен ли я просто grep "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)
Например:
В моей системе в настоящее время доступно шесть tty. У меня также есть один открытый терминал pts / 0, в котором запущено 4 процесса в fg или bg.
root 45650.00.04060576 tty1 Ss+May010:00/sbin/mingetty /dev/tty1
root 45670.00.04060572 tty2 Ss+May010:00/sbin/mingetty /dev/tty2
root 45690.00.04060568 tty3 Ss+May010:00/sbin/mingetty /dev/tty3
root 45710.00.04060576 tty4 Ss+May010:00/sbin/mingetty /dev/tty4
root 45730.00.04060576 tty5 Ss+May010:00/sbin/mingetty /dev/tty5
root 45750.00.04060572 tty6 Ss+May010:00/sbin/mingetty /dev/tty6
me 174820.00.01102361136 pts/0 R+11:360:00 ps aux
root 203740.00.01083361816 pts/0SsMay230:00-bash
root 209530.00.11614361960 pts/0 S May230:00 su - me
me 209540.00.11085241984 pts/0 S May230:00-bash
Если вы хотите убрать фоновые дочерние процессы, просто передайте uniq:
Вам все еще нужно вычесть 1 для заголовка заголовка TTY, но вы можете еще больше улучшить это, полностью убрав tty, так как кажется, что вас это все равно не волнует.
grepи awkявляется излишним, использовать awk '/pattern/; и это не работает на моей машине - он сообщает 19, когда у меня есть 1.
jasonwryan
Я немного смущен. Прямо сейчас я нахожусь на Ubuntu 14. Открыто только одно окно терминала / bash. С помощью команд abobe я получаю 23 или 13, когда я должен получить 1 или 2 в случае, если я открою другой терминал с помощью ctrl-alt-t
Martincho
Эта первая команда подсчитывает дочерние процессы, работающие в оболочках в фоновом режиме, а не просто открывающие терминальные сессии
Jeight
@jasonwryan - у меня все отлично работает. Использование grep с awk является предпочтением человека. Если кому-то удобнее делать все это в awk, тогда это нормально.
Джайт
«Это прекрасно работает на моем», вряд ли обосновывает ваш ответ ... Возможно, вы могли бы включить некоторые детали того, что «ваше», чтобы люди знали, что это относится только к этой системе.
expect
,xterm
выполняющее вход через ssh, панель screen / tmux, эмулируемый сеанс пользователя, отсутствие запуска оболочки и т. Д.?Ответы:
Используйте приведенную выше команду для подсчета открытых окон терминала.
источник
Чтобы перечислить их:
Чтобы посчитать их:
Вам нужно будет вычесть 1 из этого числа, так как оно включает верхний заголовок TTY.
Все зависит от того, хотите ли вы подсчитать, сколько запущено вспомогательных оболочек или если вы хотите подсчитать, сколько окон терминала открыто.
Для подсчета только окон терминала вам необходимо использовать:
Например:
В моей системе в настоящее время доступно шесть tty. У меня также есть один открытый терминал pts / 0, в котором запущено 4 процесса в fg или bg.
Если вы хотите убрать фоновые дочерние процессы, просто передайте uniq:
Вам все еще нужно вычесть 1 для заголовка заголовка TTY, но вы можете еще больше улучшить это, полностью убрав tty, так как кажется, что вас это все равно не волнует.
Это даст вам точный счет.
РЕДАКТИРОВАТЬ
Думая об этом, больше «ps -a» будет работать лучше, и вы можете пропустить первый grep.
источник
grep
иawk
является излишним, использоватьawk '/pattern/
; и это не работает на моей машине - он сообщает 19, когда у меня есть 1.На макос вы можете использовать:
Найдено здесь: https://stackoverflow.com/a/6180547/6320039
источник
Вы могли бы сделать
$ pgrep bash
Также вы можете сделать
$ W
источник