====== Gerenciamento de Processos no Linux ====== ===== Nível Básico ===== === 1. Visualização de Processos Simples === * **ps** - Lista os processos em execução no terminal atual. - Exemplo de uso: ps - Descrição: Exibe os processos em execução no terminal atual com informações básicas como PID, TTY e comando. * **top** - Monitora processos em tempo real. - Exemplo de uso: top - Descrição: Mostra os processos em execução, uso de CPU, memória e tempo de execução em uma interface interativa em tempo real. === 2. Gerenciamento Básico de Processos === * **kill** - Encerra um processo com base no PID. - Exemplo de uso: kill 1234 - Descrição: Encerra o processo com o PID 1234. Utiliza o sinal padrão (SIGTERM) para solicitar o encerramento. * **bg** - Coloca um processo suspenso em segundo plano. - Exemplo de uso: bg %1 - Descrição: Retoma o processo suspenso ''%1'' e o coloca em execução em segundo plano. === 3. Comandos de Controle de Processos Simples === * **jobs** - Lista os processos em segundo plano e suspensos no shell atual. - Exemplo de uso: jobs - Descrição: Exibe uma lista dos processos que estão rodando em segundo plano ou suspensos no terminal atual. * **fg** - Traz um processo de segundo plano para o primeiro plano. - Exemplo de uso: fg %1 - Descrição: Move o processo ''%1'' do segundo plano para o primeiro plano para continuar sua execução de forma interativa. ===== Nível Intermediário ===== === 1. Visualização Detalhada de Processos === * **ps aux** - Lista todos os processos em execução no sistema com informações detalhadas. - Exemplo de uso: ps aux - Descrição: Exibe uma lista completa de todos os processos, incluindo aqueles que não estão associados ao terminal atual, com informações como CPU, memória e usuário que iniciou o processo. * **htop** - Visualização interativa de processos com interface melhorada. - Exemplo de uso: htop - Descrição: Ferramenta interativa para monitorar processos em tempo real, permitindo a navegação fácil com o teclado e suporte a múltiplas opções de filtragem e ordenação. === 2. Enviar Sinais para Processos === * **kill -9** - Envia o sinal SIGKILL para encerrar um processo imediatamente. - Exemplo de uso: kill -9 1234 - Descrição: Força o encerramento imediato do processo com PID 1234. Este comando não permite que o processo execute a rotina de limpeza antes de ser finalizado. * **killall** - Envia sinais para múltiplos processos com o mesmo nome. - Exemplo de uso: killall firefox - Descrição: Encerra todos os processos que correspondem ao nome especificado, no caso ''firefox''. === 3. Gerenciamento de Prioridade de Processos === * **nice** - Inicia um processo com uma prioridade específica. - Exemplo de uso: nice -n 10 comando - Descrição: Executa o ''comando'' com prioridade reduzida, o que permite que ele consuma menos recursos do sistema. * **renice** - Altera a prioridade de um processo em execução. - Exemplo de uso: renice +5 1234 - Descrição: Altera a prioridade do processo com PID 1234, reduzindo sua prioridade, de forma que ele consuma menos recursos. === 4. Parar e Continuar Processos === * **kill -STOP** - Suspende temporariamente um processo. - Exemplo de uso: kill -STOP 1234 - Descrição: Suspende o processo com PID 1234, parando sua execução, mas sem encerrá-lo. * **kill -CONT** - Retoma a execução de um processo suspenso. - Exemplo de uso: kill -CONT 1234 - Descrição: Retoma a execução do processo com PID 1234 que estava suspenso. ===== Nível Avançado ===== === 1. Gerenciamento de Processos em Execução === * **top -u** - Filtra processos por um usuário específico. - Exemplo de uso: top -u usuario - Descrição: Exibe os processos em execução pertencentes ao usuário ''usuario'', permitindo monitorar apenas suas atividades. * **pgrep** - Encontra processos com base em nome ou outros critérios. - Exemplo de uso: pgrep apache2 - Descrição: Procura o PID de todos os processos que correspondem ao nome ''apache2''. === 2. Gerenciamento Avançado de Processos com `nohup` === * **nohup** - Executa um processo que continuará rodando mesmo após o encerramento do terminal. - Exemplo de uso: nohup comando & - Descrição: Executa o ''comando'' em segundo plano, ignorando o sinal de hangup, permitindo que o processo continue rodando após a desconexão do terminal. * **disown** - Remove um processo de segundo plano da lista de processos associados ao terminal. - Exemplo de uso: disown -h %1 - Descrição: Desassocia o processo ''%1'' do terminal atual, para que ele não seja terminado ao fechar a sessão. === 3. Gerenciamento de Processos em Múltiplas Máquinas === * **pssh** - Executa comandos de forma paralela em várias máquinas via SSH. - Exemplo de uso: pssh -h hosts.txt -l usuario comando - Descrição: Executa o ''comando'' em todas as máquinas listadas no arquivo ''hosts.txt'', utilizando o usuário ''usuario'' para acesso SSH. * **parallel-ssh** - Executa comandos simultaneamente em múltiplos servidores. - Exemplo de uso: parallel-ssh -h servidores.txt df -h - Descrição: Executa o comando ''df -h'' em todos os servidores listados no arquivo ''servidores.txt'', exibindo o uso de disco em cada servidor. === 4. Debug e Análise de Processos === * **strace** - Rastreia chamadas de sistema feitas por um processo. - Exemplo de uso: strace -p 1234 - Descrição: Anexa ao processo com PID 1234 e exibe todas as chamadas de sistema que o processo está fazendo, útil para debug. * **lsof** - Exibe arquivos abertos e portas de rede usadas por processos. - Exemplo de uso: lsof -i :80 - Descrição: Mostra todos os processos que estão usando a porta 80, normalmente para identificar servidores web ativos. === 5. Controle de Recursos por Processo === * **cgroups** - Controla e limita o uso de recursos de um grupo de processos. - Exemplo de uso: cgcreate -g memory,cpu:/meugrupo - Descrição: Cria um grupo de controle ''meugrupo'' com limites de uso de CPU e memória. Este grupo pode ser usado para limitar recursos de processos específicos. * **systemd-run** - Executa um processo sob um escopo gerenciado por systemd. - Exemplo de uso: systemd-run --scope -p MemoryMax=500M comando - Descrição: Executa o ''comando'' com um limite máximo de uso de memória de 500 MB, gerenciado pelo systemd. ===== Nível Especializado ===== === 1. Controle Avançado de Processos com `cgroups` === * **cgexec** - Executa processos em grupos de controle (cgroups) específicos. - Exemplo de uso: cgexec -g cpu,memory:/meugrupo comando - Descrição: Executa o ''comando'' dentro do cgroup ''meugrupo'', que possui restrições de CPU e memória pré-definidas, garantindo controle sobre o uso de recursos. * **cgset** - Ajusta os parâmetros de cgroups em tempo real. - Exemplo de uso: cgset -r memory.limit_in_bytes=512M /meugrupo - Descrição: Ajusta dinamicamente o limite de memória do cgroup ''meugrupo'' para 512 MB, afetando todos os processos executados dentro deste grupo. === 2. Manipulação Especializada de Processos com `systemd` === * **systemctl isolate** - Coloca o sistema em um estado ou alvo específico. - Exemplo de uso: systemctl isolate rescue.target - Descrição: Transfere o sistema para o modo de resgate, terminando a maioria dos processos normais e mantendo apenas o essencial para manutenção. * **systemctl kill** - Envia sinais a processos gerenciados pelo systemd. - Exemplo de uso: systemctl kill --kill-who=all apache2.service - Descrição: Envia sinais de término para todos os processos relacionados ao serviço ''apache2'' gerenciado pelo systemd. === 3. Limitação de I/O com `ionice` === * **ionice** - Controla a prioridade de operações de entrada/saída de disco para processos. - Exemplo de uso: ionice -c2 -n7 comando - Descrição: Executa o ''comando'' com prioridade baixa para operações de I/O no disco, minimizando seu impacto no sistema. * **ionice** + **renice** - Combina controle de I/O e prioridade de CPU. - Exemplo de uso: ionice -c2 -n7 renice +10 1234 - Descrição: Ajusta a prioridade de I/O e de CPU para o processo com PID 1234, garantindo que ele consuma poucos recursos de CPU e disco. === 4. Gerenciamento de Processos em Containers === * **docker run** - Inicia processos em containers Docker. - Exemplo de uso: docker run --rm -d --name app_container app_imagem - Descrição: Inicia um processo em um container isolado com base na imagem ''app_imagem'', permitindo que o processo seja executado de forma independente do sistema host. * **docker stats** - Monitora o uso de recursos por processos em containers. - Exemplo de uso: docker stats app_container - Descrição: Exibe o uso de CPU, memória, I/O e rede de todos os processos em execução dentro do container ''app_container'' em tempo real. === 5. Execução de Processos Distribuídos === * **Ansible** - Orquestra processos em múltiplos servidores. - Exemplo de uso: ansible -i hosts all -m shell -a 'comando' - Descrição: Executa o ''comando'' em todos os servidores listados no arquivo ''hosts'', orquestrando processos de forma paralela em uma infraestrutura distribuída. * **Kubernetes** - Gerencia processos em containers distribuídos. - Exemplo de uso: kubectl run app --image=app_imagem --replicas=3 - Descrição: Executa o processo em três réplicas de containers, distribuindo a carga entre múltiplos nós do cluster Kubernetes. === 6. Monitoração Avançada de Processos === * **atop** - Ferramenta avançada para monitoramento detalhado de processos e recursos. - Exemplo de uso: atop - Descrição: Exibe estatísticas detalhadas de uso de CPU, memória, disco e rede por processo em tempo real, permitindo a análise de desempenho. * **perf** - Ferramenta de análise de performance de processos. - Exemplo de uso: perf stat -p 1234 - Descrição: Coleta e exibe métricas detalhadas de desempenho do processo com PID 1234, como número de ciclos de CPU, cache miss e outras métricas de hardware.