ls /dev/pts/ | wc -l
Use o comando acima para contar as janelas do terminal abertas.
Estou tentando contar quantas janelas de shell ou terminal estão em execução no momento.
Eu tentei ps a|grep bash;
ps a|grep tty;
Mas pode ser impreciso.
ls /dev/pts/ | wc -l
Use o comando acima para contar as janelas do terminal abertas.
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 ele inclui o cabeçalho TTY superior.
Isso tudo depende se você deseja contar quantas sub shells estão em execução ou se deseja contar quantas janelas de terminal estão abertas.
Para contar apenas as janelas do terminal que você precisaria usar:
ls /dev/pts/ | wc -l (stated in a previous answer)
Por exemplo:
No meu sistema existem atualmente seis tty's disponíveis. Eu também tenho um terminal aberto pts / 0 que tem 4 processos em execução no fg ou 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
Se você quiser remover os processos filhos em segundo plano, envie pipe para uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Você ainda tem que subtrair 1 para o título do cabeçalho de TTY, mas você pode melhorar ainda mais isso tirando os tty's completamente, já que parece que você não se importa com eles de qualquer maneira.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Isso lhe dará uma contagem precisa.
EDITAR
Pensando nisso, mais 'ps -a' funcionaria melhor e você pode deixar de fora o primeiro grep.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l