Qual é a sua definição de janela de terminal ? Uma guia gnome-terminal, terminal virtual, pessoa que está acessando o ssh, painel screen / tmux, expectsessão de usuário emulado, xtermnão executando um shell, etc. conta?
Stéphane Chazelas
1
A janela do terminal foi aberta com "ctrl-alt-t". Eu o resolvi contando quantos "pts" existem em> quem comanda quem | grep "pts" | wc -l
Martincho
Respostas:
6
ls /dev/pts/| wc -l
Use o comando acima para contar as janelas do terminal abertas.
Tentei isso. Mostra 23. E eu tenho apenas uma janela de terminal / bash aberta.
Martincho 29/05
@ user68957 Você está em um computador compartilhado com vários usuários, por acaso?
Chirag Bhatia # chirag64
Um computador doméstico, um usuário por vez. O truque seria contar quantas janelas de terminal estão abertas ou processos de terminal. Se eu fizer um> quem, ele listará dois usuários comigo: 0 aaaa-mm-dd hh-mm (: 0) me pts / 0 aaaa-mm-dd hh-mm (: 0) Se eu abrir outra janela do terminal, com > quem mostra: me: 0 aaaa-mm-dd hh-mm (: 0) me pts / 0 aaaa-mm-dd hh-mm (: 0) me pts / 1 aaaa-mm-dd hh-mm (: 0) Devo apenas grep "pts /"?
Martincho 29/05
2
Para listá-los:
ps aux | awk '{print $7}'| grep -v "?"
Para contá-los:
ps aux | awk '{print $7}'| grep -v "?"| wc -l
Você precisará subtrair 1 desse número, pois inclui o cabeçalho TTY superior.
Tudo isso depende se você deseja contar quantas subcascas estão em execução ou se deseja contar quantas janelas de terminal estão abertas.
Para contar apenas as janelas do terminal, você precisaria usar:
ls /dev/pts/| wc -l (stated in a previous answer)
Por exemplo:
No meu sistema, atualmente existem seis ttys disponíveis. Eu também tenho um terminal aberto pts / 0 que tem 4 processos em execução no fg ou 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
Se você deseja remover os processos filho em segundo plano, basta canalizar para uniq:
Você ainda precisa subtrair 1 para o título do cabeçalho de TTY, mas pode melhorar ainda mais removendo os ttys completamente, pois parece que não se importa com eles.
grepe awké redundante, use awk '/pattern/; e isso não funciona na minha máquina - ele relata 19 quando tenho 1.
jasonwryan
Eu estou um pouco confuso. No momento, estou no Ubuntu 14. Existe apenas uma janela de terminal / bash aberta. Com os comandos Abobe, fico com 23 ou 13 anos, quando eu deveria ter 1 ou 2 no caso de eu abrir outro terminal com ctrl-alt-t
Martincho
Que as primeiras contagens de comando processos de crianças correndo em conchas no fundo e não apenas aberta sessões de terminal
Jeight
@jasonwryan - Funciona muito bem no meu. Usar grep com awk é a preferência da pessoa. Se alguém está mais confortável fazendo a coisa toda no awk, tudo bem.
Jeight 29/05
"Funciona bem na minha" dificilmente substancia sua resposta ... Talvez você possa incluir alguns detalhes do que é "seu" para que as pessoas saibam que isso só se aplica a esse sistema.
expect
sessão de usuário emulado,xterm
não executando um shell, etc. conta?Respostas:
Use o comando acima para contar as janelas do terminal abertas.
fonte
Para listá-los:
Para contá-los:
Você precisará subtrair 1 desse número, pois inclui o cabeçalho TTY superior.
Tudo isso depende se você deseja contar quantas subcascas estão em execução ou se deseja contar quantas janelas de terminal estão abertas.
Para contar apenas as janelas do terminal, você precisaria usar:
Por exemplo:
No meu sistema, atualmente existem seis ttys disponíveis. Eu também tenho um terminal aberto pts / 0 que tem 4 processos em execução no fg ou bg.
Se você deseja remover os processos filho em segundo plano, basta canalizar para uniq:
Você ainda precisa subtrair 1 para o título do cabeçalho de TTY, mas pode melhorar ainda mais removendo os ttys completamente, pois parece que não se importa com eles.
Isso lhe dará uma contagem precisa.
EDITAR
Pensando nisso, mais 'ps -a' funcionaria melhor e você pode deixar de fora o primeiro grep.
fonte
grep
eawk
é redundante, useawk '/pattern/
; e isso não funciona na minha máquina - ele relata 19 quando tenho 1.No macos você pode usar:
Encontrado aqui: /programming//a/6180547/6320039
fonte
Você poderia fazer
$ pgrep bash
Você também pode fazer
$ W
fonte