Processos: ps, kill, top e jobs
Todo programa rodando é um 'processo' com um número — e saber enxergar, pausar e encerrar processos evita muito Ctrl+C desesperado.
Todo programa que roda no seu computador — um servidor local, um script, até o próprio terminal — é um processo: uma execução com um número de identificação único, o PID (process ID). Saber ver quais processos estão rodando, pausá-los e encerrá-los é o que separa "fechar o terminal e torcer" de resolver o problema de verdade.
ps aux — a lista de processos
ps auxps (process status) lista processos; aux é um combo de flags clássico que mostra todos os processos de todos os usuários (a), com informações de dono e uso de recursos (u), incluindo processos sem terminal associado (x). A coluna PID é o número que você vai usar pra apontar exatamente qual processo mexer a seguir.
kill vs. kill -9
kill envia um sinal pra um processo, pedindo pra ele se encerrar. O nome é um pouco enganoso: o kill padrão (sinal SIGTERM) é um pedido educado — avisa o processo, que pode se preparar (salvar estado, fechar conexões) antes de sair.
kill 1421Quando isso não funciona — o processo trava e ignora o pedido —, existe a versão sem meio-termo: kill -9, que envia SIGKILL, um sinal que o sistema operacional executa à força, sem dar chance nenhuma ao processo de reagir.
kill -9 1421A diferença importa: kill -9 pode deixar arquivos temporários abertos, conexões de rede penduradas ou dados não salvos, porque o processo não teve chance de "se despedir" de nada. Por isso o padrão é sempre tentar kill primeiro, e só usar -9 quando o processo realmente não responde.
top — consumo em tempo real
ps aux é uma foto do momento. top (ou htop, uma versão mais colorida e interativa, se estiver instalado) mostra os processos atualizando ao vivo, ordenados por quem está consumindo mais CPU ou memória — ótimo pra descobrir o que está travando a máquina agora.
topDentro do top, a tecla q sai (mesma lógica do less), e k deixa você digitar um PID pra matar sem sair da tela.
Background com &, jobs, fg e bg
Quando você roda um comando normalmente, o terminal fica ocupado até ele terminar — você não consegue digitar outro comando enquanto isso. Colocar & no final manda o comando rodar em segundo plano, devolvendo o terminal pra você imediatamente.
npm run dev &O número entre colchetes é o job ID; o segundo é o PID. jobs lista tudo que está rodando em background na sessão atual do terminal:
jobsfg (foreground) traz um job de volta pro primeiro plano; bg (background) manda continuar rodando em segundo plano depois de pausado.
Ctrl+C vs. Ctrl+Z
Esses dois atalhos confundem muita gente no início porque parecem fazer a mesma coisa — "parar o que está rodando" — mas são bem diferentes. Ctrl+C envia SIGINT, pedindo pro processo encerrar de vez. Ctrl+Z envia SIGTSTP, que apenas pausa o processo, deixando ele "congelado" — ele continua existindo, só não está mais executando, e pode voltar a rodar depois com fg ou bg.
# processo rodando em primeiro plano...
# Ctrl+Z
[1]+ Stopped npm run dev
bgExercício
Você iniciou um servidor com npm run dev e ele travou, sem responder a nenhum comando. Você já sabe o PID (pelo ps aux) e já tentou kill normal, sem sucesso. Qual o próximo comando, e o que ele faz de diferente do kill normal?