Top 20 Comandos Linux: Arsenal Básico para Sysadmin Iniciante

Top 20 comandos Linux para sysadmin iniciante. Sintaxe, exemplos práticos e padrões de uso para administrar servidores Ubuntu/Debian com confiança.

Vindo do Windows, o terminal Linux assusta no começo: tela preta, zero descoberta visual, e uma cultura que assume que você já sabe o que está procurando. A boa notícia é que 80% das tarefas reais de sysadmin em VPS giram em torno de uns 20 comandos. Dominar esse núcleo te tira do “tô perdido” pra “consigo me virar” em poucas semanas.

Este tutorial cobre os 20 comandos que mais aparecem em rotina real de administração: gerenciamento de arquivos, processos, rede, pacotes e serviços. Pra cada um, mostro a sintaxe canônica, uma flag que vale ouro, e o contexto onde ele aparece de verdade. Não é referência exaustiva (man page faz isso) — é o arsenal que cobre o dia-a-dia.

Tempo estimado pra absorver o material: 25-40 minutos. Recomendo abrir uma VPS Ubuntu 24.04 LTS em paralelo e ir digitando os comandos enquanto lê.

Pré-requisitos

Pré-requisitos

Você precisa de um servidor Ubuntu 24.04 LTS (ou Debian 12) acessível via SSH e um usuário com permissão sudo. Não precisa instalar nada — todos os comandos abaixo já vêm no sistema base.

Sistema testado Ubuntu 24.04 LTS
Shell bash 5.x
Acesso SSH + sudo

Se você ainda não tem acesso SSH funcionando, ajuste isso antes — o restante do tutorial assume terminal conectado e responsivo.

Esses cinco comandos respondem “onde eu estou”, “o que tem aqui” e “como chego em outro lugar”. São os que você mais digita por hora.

01

pwd mostra o diretório atual (Print Working Directory). Use sempre que ficar em dúvida onde você está antes de rodar algo destrutivo:

pwd
# /home/joabe

Flag útil: pwd -P resolve symlinks e mostra o caminho físico real.

02

ls lista arquivos. A combinação que importa é ls -lah:

ls -lah /var/log

-l mostra permissões e dono, -a inclui arquivos ocultos (que começam com ponto), -h formata tamanho em KB/MB/GB. Memorize esses três juntos.

03

cd muda de diretório. Atalhos que economizam tempo: cd - volta pro último diretório, cd sozinho (sem argumento) vai pro home do usuário, cd .. sobe um nível:

cd /etc/nginx
cd -      # volta pro diretório anterior
cd        # vai pro $HOME
04

cp copia arquivos. Pra copiar diretório inteiro, sempre -r (recursivo) e -p (preserva metadados):

cp -rp /etc/nginx /etc/nginx.bak
Hábito de produção

Antes de editar qualquer arquivo de configuração crítico (sshd_config, nginx.conf, fstab), copie ele com sufixo .bak e data. Custo: 2 segundos. Benefício: rollback instantâneo se algo quebrar.

05

mv move e renomeia (não existe rename separado no Linux base). É atômico no mesmo filesystem — útil pra trocar arquivos em produção sem ter janela de estado intermediário:

mv config.new config.yaml

Inspeção de arquivos e processamento de texto

Logs e arquivos de config são o pão-de-cada-dia do sysadmin. Estes cinco comandos cobrem leitura e filtragem.

06

cat joga o conteúdo inteiro do arquivo no terminal. Bom pra arquivos pequenos (config). Ruim pra logs grandes — vai te encher a tela:

cat /etc/os-release
07

less é o leitor paginado. Permite navegar com setas, buscar com /padrao, sair com q. Para logs grandes é o padrão correto:

less /var/log/syslog

Dentro do less: G vai pro fim, g pro início, Shift+F segue arquivo em tempo real (similar a tail -f).

08

tail mostra as últimas linhas. A flag -f segue o arquivo conforme novas linhas chegam — essencial pra debug ao vivo:

tail -f /var/log/nginx/access.log

Combine com -n 100 pra começar mostrando as últimas 100 linhas antes de seguir.

09

grep filtra linhas que casam um padrão. Flags que valem decorar: -i ignora caixa, -r recursivo (busca em diretório inteiro), -n mostra número da linha, -v inverte (mostra linhas que NÃO casam):

grep -rn "TODO" /etc/nginx/
grep -i "error" /var/log/syslog | tail -20
grep + pipe é onipresente

A combinação comando | grep padrao aparece em literalmente todo workflow de debug. Se você só decorar um comando desta lista, decore grep.

10

find busca arquivos por nome, tamanho, data ou tipo. Mais poderoso que ls quando você não sabe onde algo está:

find /etc -name "*.conf" -mtime -7

Esse exemplo lista arquivos .conf em /etc modificados nos últimos 7 dias — útil pra investigar “o que mudou aqui recentemente”.

Processos, recursos e monitoramento

Quando o servidor fica lento ou um serviço enche o disco, esses comandos respondem “o que está acontecendo agora”.

11

ps lista processos. A invocação padrão moderna é ps auxf:

ps auxf | grep nginx

a mostra processos de todos os usuários, u formato user-friendly com %CPU/%MEM, x inclui processos sem terminal, f desenha árvore (vê quem é filho de quem).

12

top (ou htop, se você instalar) mostra processos em tempo real ordenados por CPU. Dentro do top: M ordena por memória, P por CPU, k mata um PID, q sai:

top

htop (instalar via apt install htop) é a versão moderna com cores, scroll horizontal e árvore de processos — vale o investimento.

13

df mostra uso de disco por partição. Sempre com -h (human-readable):

df -h

Quando df mostrar quase 100%, use du pra descobrir o culpado:

du -sh /var/* | sort -h | tail

Isso lista os subdiretórios de /var ordenados por tamanho, com o maior por último.

14

free mostra memória usada e livre. A flag -h formata legível:

free -h
Memória 'used' não é o que parece

Linux usa RAM livre como cache de disco. A coluna que importa é available, não freeavailable reflete quanto realmente está disponível pra novos processos sem swap.

15

kill envia sinal pra processo. Default é SIGTERM (pede pra encerrar graciosamente). -9 é SIGKILL (força — usar só como último recurso):

kill 1234        # SIGTERM
kill -9 1234     # SIGKILL (último recurso)

pkill nginx mata por nome em vez de PID. killall faz o mesmo com semântica ligeiramente diferente.

Rede, pacotes e serviços

Os últimos cinco cobrem instalação de software, gerenciamento de daemons e diagnóstico de rede.

16

apt é o gerenciador de pacotes do Ubuntu/Debian. Fluxo canônico:

sudo apt update                    # atualiza índice
sudo apt install -y htop curl jq   # instala
sudo apt upgrade -y                # atualiza pacotes instalados
sudo apt remove pacote             # remove (mantém config)
sudo apt purge pacote              # remove + apaga config

Sempre rode apt update antes de install em sessão nova — caso contrário você pode receber 404 baixando versão removida do mirror.

17

systemctl controla serviços (daemons). É o substituto moderno do service de antigamente:

sudo systemctl status nginx
sudo systemctl restart nginx
sudo systemctl enable nginx        # liga no boot
sudo systemctl disable nginx       # desliga no boot

systemctl status mostra as últimas 10 linhas do log do serviço — primeiro lugar pra olhar quando algo não inicia.

18

journalctl lê os logs do systemd (que é onde quase tudo grava hoje em Ubuntu moderno):

sudo journalctl -u nginx --since "1 hour ago"
sudo journalctl -u nginx -f

-u filtra por unit (serviço), -f segue em tempo real, --since aceita datas absolutas (“2026-05-29 14:00”) ou relativas (“10 min ago”).

19

ss lista sockets de rede (substituto do netstat). A combinação canônica é ss -tlnp:

sudo ss -tlnp

-t TCP, -l listening, -n não resolve nome (mais rápido), -p mostra qual processo dona o socket. Use pra responder “quem está escutando na porta 80?”.

20

curl faz requisições HTTP do terminal. Indispensável pra testar APIs, baixar arquivos e diagnosticar serviços web:

curl -I https://hostini.com.br             # só headers
curl -L -o file.tar.gz https://exemplo.com/file.tar.gz   # baixa seguindo redirect
curl -X POST -H "Content-Type: application/json" -d '{"k":"v"}' https://api/endpoint

-I HEAD-only (vê códigos HTTP e headers), -L segue redirecionamentos, -o salva em arquivo. wget faz coisas parecidas mas tem sintaxe diferente — escolha um e mantenha consistência.

Verificação

Depois de digitar os comandos acima na sua VPS, valide que o ambiente está saudável rodando uma sequência diagnóstica que combina vários deles:

uptime                              # tempo ligado + load average
df -h | grep -v tmpfs               # uso de disco real (filtra mounts virtuais)
free -h                             # memória
sudo ss -tlnp | head -20            # serviços escutando
sudo systemctl --failed             # serviços com falha

Se a saída desses cinco comandos te diz coisas como “uptime de 12 dias, disco 35% cheio, 60% de RAM disponível, nginx e sshd escutando, zero falhas” — você está lendo o servidor corretamente. Esse é o exame médico básico.

Resolução de problemas

”command not found” depois de instalar

O pacote pode ter sido instalado mas o binário não está no $PATH do shell atual. Rode hash -r (limpa cache de comandos do bash) ou which nome-do-comando pra ver onde ele está. Se não retornar nada, o nome do binário pode ser diferente do nome do pacote — apt list --installed | grep parcial confirma o que foi instalado.

kill não mata o processo

Processos em estado D (uninterruptible sleep — geralmente esperando I/O do disco) ignoram até SIGKILL. Cheque ps auxf na coluna STAT. Solução: esperar o I/O completar ou, se for um processo travado em filesystem remoto morto (NFS/sshfs), umount -l (lazy umount) pode liberar.

Disco cheio mas du não bate

Quase sempre é arquivo deletado ainda aberto por um processo. Liste com sudo lsof +L1. A coluna SIZE mostra quanto espaço o arquivo deletado ainda ocupa. Mate ou reinicie o processo dono pra liberar.

Próximos passos

Com esses 20 comandos no muscle memory, você consegue lidar com 80% das tarefas diárias. Pra evoluir:

  • Aprenda tmux ou screen — sessões persistentes que sobrevivem desconexão SSH. Indispensável pra processos longos.
  • Estude pipes e redirecionamento (|, >, >>, 2>&1) — eles transformam comandos individuais em workflows compostos.
  • Domine um editor de terminalnano é o atalho, vim é o investimento de longo prazo. Pelo menos saiba sair de cada um (Ctrl+X no nano, :q! no vim).
  • Escreva seu primeiro shell script — encadeie 3-4 comandos desta lista em um .sh executável. Aí começa automação real.
  • Configure SSH com chave pública em vez de senha — segurança e conveniência.

Se você está colocando esses comandos em prática num servidor de produção, uma VPS Hostini já vem com Ubuntu 24.04 LTS pré-instalado, acesso SSH liberado e snapshots automáticos — então você pode experimentar sem medo de quebrar nada irreversível.

Perguntas frequentes

Qual a diferença entre apt e apt-get?

apt é uma interface mais amigável (saída colorida, barra de progresso) pensada pra uso interativo no terminal. apt-get tem saída estável e é recomendado pra scripts e automação, já que o formato de output não muda entre versões. Funcionalmente os dois resolvem dependências da mesma forma.

Quando devo usar sudo e quando devo virar root com su?

Use sudo pra comandos pontuais — fica registrado em /var/log/auth.log e você não esquece um shell privilegiado aberto. Vire root com sudo -i só quando vai executar uma sequência longa de comandos administrativos. Evite su -, que pede a senha do root (que normalmente nem tem em Ubuntu).

Por que df mostra disco cheio mas du não bate com o tamanho real?

Quase sempre é arquivo deletado mas ainda aberto por um processo. O Linux só libera o inode quando o último file descriptor fecha. Use lsof +L1 pra listar arquivos deletados ainda referenciados e reinicie o processo dono (ou mate-o) pra recuperar o espaço.

grep, awk e sed fazem coisas parecidas — qual usar?

grep filtra linhas que casam um padrão. sed faz substituição linha-a-linha (find/replace em stream). awk processa colunas e tem aritmética/variáveis — é praticamente uma linguagem. Combinados com pipes resolvem 90% das tarefas de manipulação de texto em logs e arquivos de config.

Como mato um processo que não responde nem com kill?

kill <PID> manda SIGTERM (15), que pede pro processo terminar graciosamente. Se ele ignorar, use kill -9 <PID> (SIGKILL), que força o kernel a matar o processo sem cleanup. Use SIGKILL como último recurso — pode deixar arquivos corrompidos ou locks órfãos.

systemctl status mostra 'active (running)' mas o serviço não responde — e agora?

active (running) só significa que o PID principal está vivo, não que o serviço está saudável. Cheque os logs com journalctl -u nome-do-servico --since '10 min ago' e teste a porta com ss -tlnp | grep :porta. Pode ser deadlock interno, falta de conexão ao banco, ou bind em interface errada.

Tópicos:
Próximos passos Cloud Ryzen com NVMe e proteção DDoS sempre ativa.Coloque em produção numa VPS Hostini →
Esse tutorial foi útil?
Falar no WhatsApp