세션당 CPU 및 메모리 사용량을 얻는 방법 Linux

세션당 CPU 및 메모리 사용량을 얻는 방법 Linux

Linux에서 세션당 CPU 및 메모리 사용량의 비율을 계산하려면 bash에서 스크립트를 작성해야 합니다.

이 정보를 얻기 위해 스크립트에서 어떤 표준 UNIX 도구를 사용할 수 있습니까?

나는 이것을 가지고있다

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

...하지만 한 세션에 대한 CPU 비율을 얻을 수 없습니다(예: pts/1.

답변1

다음 명령의 출력을 구문 분석하면 필요한 정보를 얻을 수 있습니다.

$ free
$ top -bn 1

또한 살펴 보면 cron특정 간격으로 명령을 실행하는 방법입니다. 해당 세션에 대한 통계를 기록할 각 사용자에 대해 crontab을 만들어야 할 수도 있습니다.


업데이트:

여기서 원하는 것이 무엇인지 잘 모르겠습니다. 당신이 필요로하는 경우현재의각 pts/tty의 CPU %는 아래 스크립트를 사용해 보세요. 수집해야 하는 경우사용자 세션의 CPU 및 MEM 비율은 cron을 조사합니다.

이것은 PERL 스크립트입니다.필요BASH가 알려주세요.

#!/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";
}

내 시스템에서는 다음을 얻습니다.

$ ./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

관련 정보