M05·04Linux Essencial

CAPÍTULO 04

Linux Essencial

Processos, rede, sistema de arquivos, permissões e pipes — tudo que você precisa para debugar dentro de containers.

Por Thiago Souza14 min de leituraAtualizado em 2026-05

Containers rodam em cima do Linux. Saber o básico de Linux não é opcional se você quer entender o que acontece debaixo do capô.

Processos

Tudo que executa no Linux é um processo. Cada processo tem um PID (Process ID).

Comandos essenciais

bash
# Listar processos do usuário atual
ps
 
# Listar TODOS os processos com mais detalhes
ps aux
 
# Top — processos em tempo real (tipo gerenciador de tarefas)
top
 
# Versão mais bonita do top (precisa instalar)
htop
 
# Matar um processo pelo PID
kill 1234
 
# Matar à força (último recurso)
kill -9 1234
 
# Matar todos os processos com determinado nome
killall nginx
 
# Ver árvore de processos
pstree

Sinais (Signals)

Quando você "mata" um processo, na verdade está mandando um sinal pra ele. Os mais importantes:

SinalNúmeroO que faz
SIGTERM15"Por favor, encerre" — o processo pode salvar estado, fechar conexões. Use sempre que possível.
SIGKILL9"Morra agora" — o processo nem fica sabendo. Use só em emergência.
SIGINT2É o que Ctrl+C envia
SIGHUP1"Recarregue config"

Containers bons respondem ao SIGTERM com graceful shutdown. Kubernetes manda SIGTERM antes de matar pods.

Foreground vs Background

bash
# Rodar em background (com &)
./meu-script.sh &
 
# Listar jobs em background
jobs
 
# Trazer pro foreground
fg %1
 
# Mandar pro background
bg %1

Rede

Comandos de rede

bash
# Ver interfaces de rede e IPs (moderno)
ip addr
 
# Versão antiga (depreciada mas ainda comum)
ifconfig
 
# Ver rotas
ip route
 
# Ver portas em uso (moderno)
ss -tulpn
 
# Versão antiga
netstat -tulpn
 
# Testar conectividade
ping google.com
 
# Testar uma porta específica
nc -zv localhost 8080
 
# Ver requisições HTTP
curl https://api.exemplo.com
 
# Ver headers também
curl -i https://api.exemplo.com
 
# Resolver DNS
nslookup google.com
dig google.com

Decifrando ss -tulpn

ss -tulpn
   │││││
   ││││└─ n = não resolve nomes (mais rápido)
   │││└── p = mostra qual processo
   ││└─── l = só os que estão escutando (listening)
   │└──── u = UDP
   └───── t = TCP

Portas — o básico

  • Portas vão de 0 a 65535
  • 0–1023: portas privilegiadas (precisa de root)
  • 1024–49151: portas registradas (HTTP=80, HTTPS=443, SSH=22, MySQL=3306, Postgres=5432)
  • 49152–65535: portas dinâmicas (uso temporário)

Arquivos

Hierarquia do sistema de arquivos

flowchart TD
  root["/<br/>raiz de tudo"] --> bin["bin/<br/>executáveis essenciais"]
  root --> etc["etc/<br/>configuração"]
  root --> home["home/<br/>pastas dos usuários"]
  home --> alice["alice/"]
  root --> var["var/<br/>dados variáveis"]
  var --> log["log/"]
  root --> tmp["tmp/<br/>temporários"]
  root --> usr["usr/<br/>programas instalados"]
  root --> opt["opt/<br/>software de terceiros"]

Comandos de arquivo

bash
# Listar arquivos
ls
ls -la           # detalhado, incluindo ocultos
ls -lah          # tamanhos legíveis (KB, MB)
 
# Navegar
cd /caminho
cd ..            # subir um nível
cd ~             # ir pra home
pwd              # onde estou?
 
# Criar
mkdir minha-pasta
touch arquivo.txt
 
# Copiar / Mover / Remover
cp origem destino
cp -r pasta1 pasta2     # recursivo
mv velho novo
rm arquivo
rm -rf pasta            # apaga pasta com tudo dentro (cuidado!)
 
# Ver conteúdo
less arquivo.txt         # paginado (q para sair)
head arquivo.txt         # primeiras 10 linhas
tail arquivo.txt         # últimas 10 linhas
tail -f arquivo.log      # acompanha logs em tempo real
 
# Buscar
grep "erro" arquivo.log
grep -r "TODO" .         # recursivo na pasta atual
find . -name "*.go"      # achar arquivos por nome

Permissões

Cada arquivo tem permissões para 3 grupos: dono, grupo, outros.

ls -l
-rwxr-xr--  1 alice devs  4096 Jan 10 12:00 script.sh
 │└┬┘└┬┘└┬┘
 │ │  │  └─ outros: r-- (lê)
 │ │  └──── grupo:  r-x (lê e executa)
 │ └─────── dono:   rwx (lê, escreve, executa)
 └────────── tipo: - (arquivo) | d (pasta) | l (link)
bash
# Mudar permissões (modo octal)
chmod 755 script.sh    # rwx r-x r-x
chmod 644 arquivo.txt  # rw- r-- r--
 
# Mudar permissões (modo simbólico)
chmod +x script.sh     # adicionar permissão de execução
 
# Mudar dono
chown alice:devs arquivo.txt

Tabela rápida de permissões octais:

NúmeroPermissão
7rwx
6rw-
5r-x
4r--
0---

Pipes e redirecionamento — o superpoder do shell

bash
# Redirecionar saída pra arquivo
echo "olá" > arquivo.txt          # sobrescreve
echo "mundo" >> arquivo.txt       # adiciona ao final
 
# Pipe — saída de um comando vira entrada do próximo
ps aux | grep nginx               # processos relacionados a nginx
grep ERROR log.txt | wc -l        # quantas linhas tem ERROR
 
# Combinando
docker ps | grep meu-app | awk '{print $1}'  # pega só os IDs