Mas primeiro o que é o comando who
?
O comando who exibe informações sobre todos os usuários atualmente no sistema local. As seguintes informações são exibidas: nome de login, tty, data e hora do login. Digitar who
e exibirá seu nome de login, tty, data e hora em que você efetuou login. Se o usuário estiver conectado a partir de uma máquina remota, o nome do host dessa máquina também será exibido.
O comando who também pode exibir o tempo decorrido desde a ocorrência da atividade da linha, o ID do processo do interpretador de comandos (shell), logins, logoffs, reinicializações e alterações no relógio do sistema, bem como outros processos gerados pelo processo de inicialização.
- Ausência de
utmp
ewtmp
: O comandowho
depende dos arquivos/var/run/utmp
e/var/log/wtmp
, que armazenam informações sobre usuários logados. Estes arquivos não são gerados ou mantidos dentro de contêineres por padrão, já que contêineres são frequentemente projetados para rodar processos únicos e não suportam múltiplos logins interativos como em servidores tradicionais. - Sessões Limitadas em Contêineres: Contêineres geralmente não são usados para suportar logins interativos de múltiplos usuários. O foco é em processos isolados. Isso torna o sistema de gerenciamento de sessões, que o comando
who
depende, desnecessário.
Alternativas
Para monitorar o estado de um contêiner ou entender quais processos estão em execução, aqui estão algumas abordagens alternativas:
1. Verifique Processos com ps
Embora você não possa usar who
, você pode verificar quais processos estão sendo executados e sob quais usuários usando o comando ps
.
ps aux
Isso mostrará todos os processos em execução no contêiner, incluindo o usuário sob o qual estão sendo executados.
Exemplo de saída:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND postgres 1 0.0 0.0 212160 15972 ? Ss 08:42 0:00 postgres postgres 15 0.0 0.0 213672 17192 ? Ss 08:42 0:00 postgres :checkpointer
2. Usuário Atual com whoami
Você pode verificar o usuário atual dentro do contêiner com o comando whoami
:
whoami
Isso mostrará o usuário que está executando o shell ou o processo atual. Em um contêiner PostgreSQL típico, isso provavelmente será postgres
.
3. Entrar no Contêiner e Verificar Usuário
Se você quiser verificar quem está rodando os processos manualmente, pode entrar no contêiner com docker exec
e usar comandos como whoami
ou ps
.
docker exec -it <nome_do_conteiner> /bin/sh whoami ps aux
Para ver os processos em execução em um sistema Linux, você pode usar os seguintes comandos:
ps
: Mostra uma lista dos processos em execução.ps aux
oups -aux
: Mostra todos os processos com detalhes adicionais.ps -ef
: Exibe uma lista de processos em um formato de lista completa.
top
: Mostra uma visão em tempo real dos processos em execução e suas informações de uso de recursos.- Apenas digite
top
e pressione Enter para visualizar a lista de processos em tempo real.
- Apenas digite
htop
: Uma versão melhorada dotop
, com uma interface mais amigável e opções de filtragem e interação.- Pode não estar instalado por padrão. Para instalar, use
sudo apt-get install htop
(em distribuições baseadas no Debian/Ubuntu) ousudo yum install htop
(em distribuições baseadas no Red Hat/CentOS). Após a instalação, digitehtop
para usá-lo.
- Pode não estar instalado por padrão. Para instalar, use
pgrep
: Procura processos com base em critérios, como nome.pgrep nome_do_processo
: Mostra os IDs dos processos que correspondem ao nome fornecido.
pstree
: Exibe uma árvore hierárquica dos processos em execução.- Pode não estar instalado por padrão. Para instalar, use
sudo apt-get install pstree
(em distribuições baseadas no Debian/Ubuntu) ousudo yum install pstree
(em distribuições baseadas no Red Hat/CentOS). Após a instalação, digitepstree
para visualizar a árvore de processos.
- Pode não estar instalado por padrão. Para instalar, use
Conclusão
Comandos como who
não funcionam em contêineres minimalistas como os baseados no Alpine Linux porque não há suporte para múltiplas sessões de login, e arquivos como /var/run/utmp
ou /var/log/wtmp
não são gerados. No entanto, você pode usar comandos como ps aux
e whoami
para monitorar os processos e o usuário em execução no contêiner.