Como contar quantos shell / terminais estão rodando?

7

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.

    
por Martincho 29.05.2014 / 19:35

3 respostas

4

ls /dev/pts/  | wc -l

Use o comando acima para contar as janelas do terminal abertas.

    
por 29.05.2014 / 19:40
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 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
    
por 29.05.2014 / 19:56
-1

Você pode fazer $ pgrep bash

Vocêtambémpodefazer$W

    
por 01.11.2018 / 16:25

Tags