Monitoramento de processos - TOP
Publicado por Carpegieri Torezani (última atualização em 19/02/2019)
[ Hits: 2.352 ]
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>';
?>
Monitoramento simples de servidores [versão 1.0]
Transferir dados do Excel ou TXT para BD utilizando PHP
phpAutoConf :: gerencie configurações de modo fácil e automático
Folha de Ponto, com datas móveis como Carnaval Sexta-Feira Santa e Corpus Christi
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Preciso recuperar videos *.mp4 corrompidos (10)
É normal não gostar de KDE? (11)
Secure boot, artigo interessante, nada técnico. (2)









