Monitoramento de processos - TOP

Publicado por Carpegieri Torezani (última atualização em 19/02/2019)

[ Hits: 1.776 ]

Homepage: www.carpegieri.com.br

Download top.php




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.

  



Esconder código-fonte

<?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>';
?>

Scripts recomendados

Calendário em php

Monitoramento simples de servidores [versão 1.0]

Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].

Função para converter datas

Script que captura data e hora do PC


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts