Como posso encontrar on-line o número de usuários no Linux?

10

Como posso ver quantas pessoas estão conectadas a uma máquina Linux? Eu sei que o comando 'users' mostra todas as pessoas logadas, mas eu preciso de um número. Existe uma opção para usuários que estão faltando na página do manual? Pensei em usar o comando grep -c , mas deve haver algo igual em cada nome de usuário para que isso funcione. Existe uma maneira mais fácil?

    
por Jamal 26.07.2009 / 05:26

12 respostas

16

Você está procurando o comando wc (contagem de palavras).

Tente isto:

users | wc -w
    
por 26.07.2009 / 05:26
18

Classicamente, o comando é 'quem' em vez de 'usuários', mas 'quem' fornece mais informações. Olhando para os artigos originais do Unix (meados dos anos 70), o exemplo teria sido:

who | wc -l

Usar 'wc -l' conta as linhas de saída - funciona com ambos 'usuários' e 'quem'. Usar '-w' só funciona de forma confiável quando há uma palavra por usuário (como com 'usuários', mas não com 'quem').

Você pode usar 'grep -c' para contar as linhas. Como você está interessado apenas em nomes de usuário que não estão em branco, você pode fazer:

who | grep -c .

Sempre há pelo menos um caractere em cada linha.

Como observado nos comentários por < href="https://superuser.com/users/1931/john-t"> John T , o comando users difere de who em vários aspectos. O mais importante é que, em vez de dar um nome por linha, ele espalha os nomes por linha - não tenho uma máquina com vários usuários conectados para testar o que acontece quando o número de usuários se torna grande. A outra diferença é que 'quem' informa sobre conexões de terminal em uso. Com várias janelas de terminal abertas, ele mostrará várias linhas para um único usuário, enquanto "usuários" parece listar um usuário conectado apenas uma vez.

Como consequência desta diferença, a formulação ' grep -c . ' não funciona com o comando 'users'; ' wc -w ' é necessário.

    
por 26.07.2009 / 05:53
7

Abra um shell e digite:

who -q

A última linha lhe dará uma contagem.

EDITAR:

(suspiro) Eu não entendi a pergunta. Aqui está uma abordagem de força bruta:

Para ver nomes de usuário únicos:

who | awk '{ print $1 }' | sort | uniq

Para ver uma contagem de usuários únicos:

who | awk '{ print $1 }' | sort | uniq | wc -l 
    
por 26.07.2009 / 06:27
3

Você quer ver o número de sessões ou o número de usuários reais ?

$ who
andrew   tty1         2009-07-26 15:31 (:0)
andrew   pts/0        2009-07-27 00:11 (:0.0)
andrew   pts/1        2009-07-27 01:58 (:0.0)

Isso está no meu laptop, então eu sou o único usuário, mas eu estou logado três vezes.

$ who | wc -l
3
$ users | wc -w
3

É bastante fácil filtrar essas duplicatas para obter o número de usuários reais.

$ users | tr ' ' '\n' | sort -u 
andrew
$ users | tr ' ' '\n' | sort -u | wc -l
1
    
por 27.07.2009 / 03:32
3

Aqui está uma versão bash do ótimo post do tink :

set $(users)
declare -A user
for u ; do ((user[$u]++)) ; done
for key in "${!user[@]}" ; do echo "$key: ${user[$key]}" ; done | column -t | sort -nk 2

Ok, é um pouco mais longo, mas valeu a pena encontrar esse ...:).

Durante o teste, faça antes da próxima tentativa:

shift $#                # clear positional parameters
unset user              # remove associative array variable
    
por 09.06.2016 / 15:19
2

número de usuários atualmente conectados:

who |cut -c 1-9 |sort -u |wc -l

o buta acima com o nome da conta:

who |cut -c 1-9 |sort -u |tee /dev/tty |wc -l
    
por 23.01.2012 / 20:58
1
who | cut --delimiter=' ' -f 1 | sort -u | wc -l

Quem imprime a lista, o cut remove tudo, menos a primeira linha, classifica -u classifica e remove duplicatas e wc -l conta as linhas. Funciona bem para mim no ubuntu / bash:)

    
por 26.07.2009 / 22:36
1

Você pode simplesmente usar w ( /usr/bin/w no meu sistema baseado no Red Hat) ou uptime , eles mostram o número real de usuários logados.

w:

                              v
 22:40:38 up 3 days, 22 min,  1 user,  load average: 0.02, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
manuel   pts/0    pc-manuel        09:35    0.00s  0.07s  0.00s /usr/bin/screen -xRR

tempo de atividade:

                              v
 22:39:18 up 3 days, 21 min,  1 user,  load average: 0.08, 0.02, 0.01
    
por 26.07.2009 / 22:42
1

E um método que usa apenas um tubo ...

users | awk '{for(i=1;i<=NF;i++){a[$i]++}}END{for(i in a){print i"\t"a[i]}}'

:}

    
por 17.02.2013 / 20:20
1

link

"quem" imprime informações sobre usuários que estão conectados no momento. Sinopse:

quem [opção] [arquivo] [sou eu]

    
por 29.01.2015 / 07:22
0

Você sempre pode baixar a ferramenta gratuita para unix chamada TOP. Ele produz uma lista dos usuários e também o que eles estão fazendo no sistema no momento e continuará atualizando enquanto estiver em execução.

Ele está localizado no link

Ele possui muitas opções de linha de comando para que você possa extrair as informações que procura.

    
por 26.07.2009 / 06:17
-2

Se você estiver procurando pelo número total de usuários conectados e desconectados em uma sequência adequada, o melhor comando para executar é

cat -n /etc/passwd
    
por 21.02.2013 / 05:34

Tags