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.
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.
Respostas:
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 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 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ê deseja remover os processos filho em segundo plano, basta canalizar para uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
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.
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
grep
e awk
é redundante, use awk '/pattern/
; e isso não funciona na minha máquina - ele relata 19 quando tenho 1.
No macos você pode usar:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Encontrado aqui: /programming//a/6180547/6320039
expect
sessão de usuário emulado,xterm
não executando um shell, etc. conta?