Monitoramento de processos - TOP
Publicado por Carpegieri Torezani (última atualização em 19/02/2019)
[ Hits: 1.951 ]
Homepage: www.carpegieri.com.br
O presente script faz o monitoramento dos processos executados no sistema, através da saída do programa "top", sendo possível ordenar processos por vários critérios e estipular tempo para atualização.
Obs.: permitir ao PHP acesso a execução de comandos no shell.
<?php // Este Script foi desenvolvido por Carpegieri Torezani //Você pode usa-lo modifica-lo desde que mantenha os devidos créditos // Contato: carpegieri@gmail.com // Telefone: (27)3729-1986 // Procedimento para tempo de atualização if($tempo_atualizar==""){$tempo_atualizar=$_POST["tempo"];} if($tempo_atualizar==""){$tempo_atualizar=$_GET["tempo"];} if($tempo_atualizar==""){$tempo_atualizar=60;} // Procedimento para Ordenar if($Ordem==""){$Ordem=$_POST["id_Ordenar"];} if($Ordem==""){$Ordem=$_GET["Ordem"];} if($Ordem==""){$Ordem=17;} // Cor do principal do Sistema $Cor_Estilo="#01725e"; // Função formatar número para GB function memo ($memoria_ini) { $memoria=(($memoria_ini)/1024)/1024; $memoria= number_format($memoria, 2, ',', ' '); echo $memoria; } // Função formatar número para MB function memo2 ($memoria_ini) { $memoria=($memoria_ini)/1024; $memoria= number_format($memoria, 2, ',', '.'); echo $memoria; } // Formatar data e hora date_default_timezone_set("Brazil/East"); $dataHora = date("d/m/Y H:i:s"); // Formatar Saída comando TOP $temp=shell_exec("sudo top -b -n 1"); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace(" ", "|", $temp); $temp = str_replace("\n ", "\n", $temp); $temp = str_replace("\n", "\n|", $temp); $temp = str_replace("||", "|", $temp); $temp = str_replace("\n|", "\n", $temp); // Separando a saída por linha $Dados= explode("\n", $temp); // Contar quantas linhas tem o vetor $NumeroLinhas = count($Dados); // Formatando os dados de saída / pegar informações sobre horas em funcionamento $quebrado= explode("|", $Dados[0]); $quebrado = str_replace(",", "", $quebrado); $hora=explode(":", $quebrado[2]); // Buscar informações sobre o processador $inf_processador=shell_exec("sudo cat /proc/cpuinfo | grep \"model name\" | uniq"); $inf_processador= str_replace("model name : ", "", $inf_processador); //Validade de números de usuários, pois pode alterar a localização dependendo da execução if ($quebrado[7]!="users"){$user_ativos=$quebrado[7];} else {$user_ativos=$quebrado[6];} echo ' <html> <link rel="shortcut icon" href="../imagem/sc.ico"> <META HTTP-EQUIV=\'REFRESH\' CONTENT=\''.$tempo_atualizar.';URL=top.php?Ordem='.$Ordem.'&tempo='.$tempo_atualizar.'\'> <style> #textovertical {writing-mode: vertical-rl;} </style> <body><center> <table border=5 cellspacing=10 bordercolor='.$Cor_Estilo.'> <tr><td height="40" bgcolor='.$Cor_Estilo.' colspan=12><center><b><font color=white>Informações do Sistema<br>Atualizado em '.$dataHora.'</td></tr> <tr> <td colspan=6><font color=red><b><center>Tempo Ligado </td> <td colspan=6><font color=red><b><center>Usuários Ativos</td> </tr> <tr> <td colspan=6><center><font color='.$Cor_Estilo.'><b>'.$quebrado[4].' dias, '.$hora[0].' horas e '.$hora[1].' minutos</td> <td colspan=6><center><font color='.$Cor_Estilo.'><b>'.$user_ativos.'</td> </tr>'; // Processando informações da segunda linha $quebrado= explode("|", $Dados[1]); $quebrado = str_replace(",", "", $quebrado); echo ' <tr> <td colspan=2><center><font color=red><b>Processos</td> <td colspan=2><center><font color=red><b>Executando</td> <td colspan=2><center><font color=red><b>Dormindo</td> <td colspan=2><center><font color=red><b>Parado</td> <td colspan=2><center><font color=red><b>Modo Zumbi</td> <td colspan=2><center><font color=red><b>Processador</td> <tr> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'.$quebrado[1].'</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'.$quebrado[3].'</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'.$quebrado[5].'</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'.$quebrado[7].'</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'.$quebrado[9].'</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'.$inf_processador.'</td> </tr>'; // Processando informações da quarta linha $quebrado= explode("|", $Dados[3]); $quebrado = str_replace(",", "", $quebrado); // Processando informações da quinta linha $quebrado1= explode("|", $Dados[4]); $quebrado1= str_replace(",", "", $quebrado1); // Formatando informações da memória em GB / Limitar em duas casas decimais $memoriap=(($quebrado[2])/1024)/1024; $memoriap= number_format($memoriap, 2, ',', ' '); echo ' <tr> <td colspan=2><center><font color=red><b>Memória Principal</td> <td colspan=2><center><font color=red><b>Usada</td> <td colspan=2><center><font color=red><b>Livre</td> <td colspan=2><center><font color=red><b>Memória Swap</td> <td colspan=2><center><font color=red><b>Usada</td> <td colspan=2><center><font color=red><b>Livre</td> <tr> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo memo($quebrado[2]); echo' GB</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo memo($quebrado[4]); echo' GB</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo memo($quebrado[6]); echo' GB</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo memo($quebrado1[2]); echo' GB</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo memo($quebrado1[4]); echo' GB</td> <td colspan=2><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo memo($quebrado1[6]); echo' GB</td> </tr>'; $NumeroLinhas=$NumeroLinhas-2; // Salvar Informações em Arquivo $arquivo_Ordenado = fopen("processos.txt", "w"); for ($i=7; $i<=$NumeroLinhas; $i++){ $quebrado=explode("|", $Dados[$i]); // Formata saída atribuindo Palavras no lugar das letras switch ($quebrado[7]) { case "D": $quebrado[7]="Ininterrupto"; break; case "R": $quebrado[7]="Executando"; break; case "S": $quebrado[7]="Dormindo"; break; case "T": $quebrado[7]="Parado"; break; case "Z": $quebrado[7]="Zumbi"; break; } //Escreve informações no arquivo fwrite($arquivo_Ordenado, "$quebrado[0]|$quebrado[1]|$quebrado[2]|$quebrado[3]|$quebrado[4]|$quebrado[5]|$quebrado[6]|$quebrado[7]|$quebrado[8]|$quebrado[9]|$quebrado[10]|$quebrado[11]\n"); } //Fecha o arquivo e altera permissão fclose($arquivo_Ordenado); shell_exec("sudo chmod 777 processos.txt"); // Manipular Arquivo passando valorer para vetor $linhas = file ("processos.txt"); //variável armazena o total de linhas importadas $total_linhas_importadas = 0; foreach($linhas as $valor) { list($ID[],$User[],$Prio[],$IDPrio[],$MV[],$MU[],$MC[],$Estado[],$PorCPU[],$PorMem[],$Tempo[],$Comando[]) = explode("|", $valor); // Separa o valores baseado na '|' barra $total_linhas_importadas++;} // Escolha com opções de ordenar switch ($Ordem) { case 0: array_multisort($ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="ID Menor"; break; case 1: array_multisort($ID,SORT_DESC,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="ID Maior"; break; case 2: array_multisort($User,$ID,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Usuário Crescente"; break; case 3: array_multisort($User,SORT_DESC,$ID,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Usuário Decrescente"; break; case 4: array_multisort($Prio,$ID,$User,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Prioridade Menor"; break; case 5: array_multisort($Prio,SORT_DESC,$ID,$User,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Prioridade Maior"; break; case 6: array_multisort($IDPrio,$ID,$User,$Prio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="ID Prioridade Menor"; break; case 7: array_multisort($IDPrio,SORT_DESC,$ID,$User,$Prio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="ID Prioridade Maior"; break; case 8: array_multisort($MV,$ID,$User,$Prio,$IDPrio,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Memória Virtual Menor"; break; case 9: array_multisort($MV,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Memória Virtual Maior"; break; case 10: array_multisort($MU,$ID,$User,$Prio,$IDPrio,$MV,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Memória Usada Menor"; break; case 11: array_multisort($MU,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MC,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Memória Usada Maior"; break; case 12: array_multisort($MC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Memória Compartilhada Menor"; break; case 13: array_multisort($MC,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$Estado,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Memória Compartilhada Maior"; break; case 14: array_multisort($Estado,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Estado Crescente"; break; case 15: array_multisort($Estado,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$PorCPU,$PorMem,$Tempo,$Comando);$nome_ordem="Estado Decrescente"; break; case 16: array_multisort($PorCPU,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorMem,$Tempo,$Comando);$nome_ordem="Porcentagem CPU Menor"; break; case 17: array_multisort($PorCPU,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorMem,$Tempo,$Comando);$nome_ordem="Porcentagem CPU Maior"; break; case 18: array_multisort($PorMem,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$Tempo,$Comando);$nome_ordem="Porcentagem Memória Menor"; break; case 19: array_multisort($PorMem,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$Tempo,$Comando);$nome_ordem="Porcentagem Memória Maior"; break; case 20: array_multisort($Tempo,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Comando);$nome_ordem="Tempo Menor"; break; case 21: array_multisort($Tempo,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Comando);$nome_ordem="Tempo Maior"; break; case 22: array_multisort($Comando,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo);$nome_ordem="Comando Crescente"; break; case 23: array_multisort($Comando,SORT_DESC,$ID,$User,$Prio,$IDPrio,$MV,$MU,$MC,$Estado,$PorCPU,$PorMem,$Tempo);$nome_ordem="Comando Decrescente"; break; } echo ' <tr><td height="40" bgcolor='.$Cor_Estilo.' colspan=12><center><b><font color=white>Informações sobre os Processos</td></tr> <tr> <td height="40" bgcolor='.$Cor_Estilo.' colspan=6><center><b><font color=white>Processos Ordenados por: '.$nome_ordem.'</td> <form name="atualizar" method="POST" enctype="utf-8" accept-charset="UTF-8" action="top.php"> <td height="40" bgcolor='.$Cor_Estilo.' colspan=6><center><center><b><font color=white> <center><font color=white>Atualizar a cada <input name=tempo value='.$tempo_atualizar.' type="text" style="width:40px;font-size: 13px"> <b>Segundos<br> Selecione uma opção: <select name="id_Ordenar"> <option value="">Selecione uma Opção</option> <option value="0" >ID Menor</option> <option value="1" >ID Maior</option> <option value="2" >Usuário Crescente</option> <option value="3" >Usuário Decrescente</option> <option value="4" >Prioridade Menor</option> <option value="5" >Prioridade Maior</option> <option value="6" >ID Prioridade Menor</option> <option value="7" >ID Prioridade Maior</option> <option value="8" >Memória Virtual Menor</option> <option value="9" >Memória Virtual Maior</option> <option value="10" >Memória Usada Menor</option> <option value="11" >Memória Usada Maior</option> <option value="12" >Memória Compartilhada Menor</option> <option value="13" >Memória Compartilhada Maior</option> <option value="14" >Estado Crescente</option> <option value="15" >Estado Decrescente</option> <option value="16" >Porcentagem CPU Menor</option> <option value="17" >Porcentagem CPU Maior</option> <option value="18" >Porcentagem Memória Menor</option> <option value="19" >Porcentagem Memória Maior</option> <option value="20" >Tempo Menor</option> <option value="21" >Tempo Maior</option> <option value="22" >Comando Crescente</option> <option value="23" >Comando Decrescente</option> </select> <input type="submit" value="Aplicar"> </td></form> </tr> <tr> <td><center><font color=red id=textovertical><b>ID</td> <td><center><font color=red id=textovertical><b>Usuário</td> <td><center><font color=red id=textovertical><b>Prioridade</td> <td><center><font color=red id=textovertical><b>ID Prioridade</td> <td><center><font color=red id=textovertical><b>Memória Virtual</td> <td><center><font color=red id=textovertical><b>Memória Usada</td> <td><center><font color=red id=textovertical><b>Memória Compartilhada</td> <td><center><font color=red id=textovertical><b>Estado</td> <td><center><font color=red id=textovertical><b>Porcentagem CPU</td> <td><center><font color=red id=textovertical><b>Porcentagem Memória</td> <td><center><font color=red id=textovertical><b>Tempo</td> <td><center><font color=red id=textovertical><b>Comando</td> </tr> '; for ($i=0; $i<$total_linhas_importadas; $i++){ echo '<tr> <td><center><font color='.$Cor_Estilo.'><b>'.$ID[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$User[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$Prio[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$IDPrio[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo2 memo2($MV[$i]); echo ' MB</td> <td><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo2 memo2($MU[$i]); echo ' MB</td> <td><center><font color='.$Cor_Estilo.'><b>'; // Chamada função memo2 memo2($MC[$i]); echo ' MB</td> <td><center><font color='.$Cor_Estilo.'><b>'.$Estado[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$PorCPU[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$PorMem[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$Tempo[$i].'</td> <td><center><font color='.$Cor_Estilo.'><b>'.$Comando[$i].'</td> </tr>';} echo '</table> </body> </html>'; ?>
Validação de e-mail usando o DIG
SuperTab - tabela HTML com paginação e ordenação (PHP + MySQL)
Gerando Código de barras no padrão brasileiro compatível com Browsers Linux e Windows
Nenhum comentário foi encontrado.
Agora temos uma assistente virtual no fórum!!! (246)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (13)
Definir tempo limite para acesso ssh (2)
Como eu faço para ativar o sistema de gestos do mousepad? (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta