特定のプロセスの全体的なメモリ使用量を取得したいと思います。たとえば、合計メモリ量を取得したいとします。httpd。したがって、tailコマンドを実行すると、次の結果tail -M
が表示されます。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10036 mysql 20 0 417m 76m 3820 S 0.3 15.5 0:13.55 mysqld
10453 apache 20 0 229m 67m 42m S 0.0 13.7 0:10.81 httpd
10447 apache 20 0 230m 64m 38m S 0.0 13.0 0:11.54 httpd
10479 apache 20 0 226m 64m 42m S 0.0 13.0 0:09.75 httpd
10478 apache 20 0 230m 63m 38m S 0.0 12.9 0:11.02 httpd
10451 apache 20 0 230m 63m 37m S 0.0 12.8 0:10.37 httpd
9599 apache 20 0 227m 61m 38m S 0.0 12.4 0:10.80 httpd
10454 apache 20 0 226m 60m 38m S 0.0 12.2 0:09.56 httpd
10476 apache 20 0 225m 58m 38m S 0.0 11.9 0:09.87 httpd
10332 apache 20 0 228m 50m 24m S 0.0 10.2 0:13.73 httpd
10445 apache 20 0 220m 42m 24m S 0.0 8.5 0:10.17 httpd
637 root 10 -10 32816 25m 1712 S 0.0 5.2 0:00.01 iscsiuio
652 root 10 -10 5128 2972 1876 S 0.0 0.6 0:05.86 iscsid
9592 root 20 0 207m 2872 900 S 0.0 0.6 0:00.39 httpd
10196 nobody 20 0 136m 2408 500 S 0.0 0.5 0:00.79 memcached
この場合、出力の各行に「VIRT」、「RES」、「SHR」、「%CUP」、「%MEM」を追加したいと思います。
できますか?
ベストアンサー1
以下を使ってこれを行います。アッ:
top -b -n1 -c |
awk -vOFS=$'\t' '
$2 == "apache"{
virt+=$5; res+=$6; shr+=$7; cpu+=$9; mem+=$10; count++
}
END{
print "virt", "res", "shr", "cpu", "mem"
print virt, res, shr, cpu/count, mem/count
}
'