Como obter o uso da CPU e da memória por sessão Linux

1

Eu tenho que fazer um script no bash para calcular a porcentagem de uso de CPU e memória por sessão no Linux.

Quais ferramentas UNIX padrão eu posso usar no meu script para obter essas informações?

Eu tenho isso

ML_CPU=$(ps -e -o pcpu= | awk '{sum+=$1} END {print sum}') 

… mas não consigo obter a porcentagem de CPU para uma sessão, por exemplo, para pts/1 .

    
por Freddy 21.09.2012 / 03:15

1 resposta

0

A análise da saída dos seguintes comandos deve fornecer o que você precisa:

$ free
$ top -bn 1

Veja também cron , é uma maneira de executar comandos em intervalos específicos. Você provavelmente precisará criar um crontab para cada usuário que registrará as estatísticas dessa sessão.

ATUALIZAÇÃO:

Não sei se entendi o que você quer aqui. Se você precisar da% da CPU atual para cada pts / tty, tente o script abaixo. Se você precisar coletar as porcentagens de CPU e MEM em total para a sessão de um usuário, olhe para o cron.

Este é um script PERL, se você precisar BASH, me avise.

#!/usr/bin/perl -w
## Collect ps output
open(A, "ps xo pcpu,pmem,tty |");
my %stats;
while (<A>){
    ## Ignore 1st line
    next if $.==1;
    ## Remove new line character (\n)
    chomp;
    ## Get the CPU% and TTY
    /\s*(.+)\s(.+)\s(.+)$/;
    ## Add the CPU% ($1) and MEM% ($2) for each TTY ($3)
    $stats{$3}{CPU}+=$1;
    $stats{$3}{MEM}+=$2;
}
close(A);
## Sort output by CPU%. Use 'sort -nk 5' for MEM%
open(A, "| sort -nk 3");
## The keys of the %stats hash are the different
## TTYs (including '?'). Cycle through and print
foreach (keys(%stats)) {
    print A "$_\tCPU%: $stats{$_}{CPU}  \tMEM%: $stats{$_}{MEM}\n";
}

No meu sistema, recebo:

$ ./cpu_percent.pl
pts/0   CPU%: 0     MEM%: 0
pts/2   CPU%: 0     MEM%: 0
pts/3   CPU%: 0     MEM%: 0
pts/4   CPU%: 0     MEM%: 0
pts/5   CPU%: 0     MEM%: 0
pts/7   CPU%: 0     MEM%: 0
pts/8   CPU%: 0     MEM%: 0
tty3    CPU%: 0.3   MEM%: 0
pts/6   CPU%: 0.8   MEM%: 0.5
pts/1   CPU%: 0.9   MEM%: 0.5
?   CPU%: 14.7      MEM%: 15.4
    
por 21.09.2012 / 19:04