ProcManRuby é uma ferramenta simples de gerenciamento de processos para sistemas Unix-like (com foco em macOS e Linux), desenvolvida em Ruby durante o desafio do passaporte da Real Seguro Viagem no mes de Abril. A ferramenta permite listar processos, pausar, continuar (resumir) e matar processos usando apenas o PID, além de manter um registro completo das ações em um arquivo de log.
-
🔍 Listar processos com:
- PID
- Usuário dono
- Consumo de CPU (%)
- Consumo de memória (%)
- Tempo de execução
- Estado do processo
- Comando de execução
-
⏸️ Pausar processo (
SIGSTOP) -
▶️ Continuar processo (SIGCONT) -
❌ Matar processo (
SIGTERM) -
ℹ️ Ver informações detalhadas de um processo específico
-
📝 Log das ações em
procman.log:- Inclui data/hora, ação realizada e PID envolvido
- Ruby 3.3+
- Unix-like OS (Linux ou macOS)
Clone o repositório e dê permissão de execução:
git clone https://github.com/carloshendvpm/procmanruby.git
cd procmanruby
chmod +x procman.rbVocê pode utilizar a ferramenta de duas formas:
./procman.rb list # Lista todos os processos
./procman.rb pause <PID> # Pausa processo
./procman.rb resume <PID> # Continua processo
./procman.rb kill <PID> # Mata processo
./procman.rb info <PID> # Mostra info detalhada
./procman.rb help # Mostra ajuda./procman.rb interactiveA ferramenta exibirá um menu para você escolher as ações interativamente.
./procman.rb list
./procman.rb pause 1234
./procman.rb resume 1234
./procman.rb kill 1234
./procman.rb info 1234As ações são registradas em procman.log com o seguinte formato:
2025-04-30 17:48:57 - Paused process - PID: 1234
2025-04-30 17:48:57 - Killed process - PID: 5678
Embora a proposta inicial sugerisse uso de Shell Script ou C/C++, optei por Ruby pelas seguintes razões:
- Permite manipulação de processos de forma simples com chamadas diretas (
Process.kill, etc.) - Suporte nativo a manipulação de arquivos e data/hora para logs
- Escrita mais concisa e fácil de manter
- Facilidade para criar um modo interativo no terminal
Além disso, a ferramenta continua aderente aos requisitos, funcionando de forma eficaz tanto no Linux quanto no macOS.
- Verificação se o PID existe antes de aplicar sinais
- Tratamento de exceções como:
- Processo inexistente (
Errno::ESRCH) - Permissão negada (
Errno::EPERM)
- Processo inexistente (
- Mensagens claras ao usuário
Desenvolvido por Carlos Henrique - Full Stack Developer