Você está procurando o comando wc
(contagem de palavras).
Tente isto:
users | wc -w
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?
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.
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
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
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
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
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:)
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
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]}}'
:}
"quem" imprime informações sobre usuários que estão conectados no momento. Sinopse:
quem [opção] [arquivo] [sou eu]
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.
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
Tags linux