我一直在寻找使用stream程统计来跟踪在我们的环境中运行有问题的脚本的各种用户和网站,而不是像定期刮顶一样。
不太清楚的是哪个字段真正表示使用的CPU秒/分钟。 我读过的手册页说'cpu'列是烧毁的秒数,但是也有'cp'列用-m显示,他们可以显示不同的总数。 例如:
当我使用-m标志时,我得到了
$sa -m | grep username username 14944 65.53re 29.90cp 5308k
当我使用-u标志并将“cpu”的列总计时,我得到以下结果:
sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}' 1032.86
任何人都可以帮助我理解这两种不同模式下“cp”和“cpu”列的区别吗?
谢谢!
让我用一个例子来帮助解释你的结果显示:
首先:我创build了一个bash脚本,作为用户patrickr运行,这意味着将足够的负载放在系统上显而易见。
#!/bin/bash #this file is named loop_script.sh for i in {1..5000} do echo "Welcome $i times" done
第二:我卸载,然后重新安装acct,以便我/ var / log / acct中的文件将是新鲜的。 创build/ var / log / acct / pacct文件的副本,以便将来可以使用正确格式的文件轻松截断文件(不能只是删除并重新创build文件 – 如果你这样做,sa将停止工作)。 请注意,这个文件是系统上所有命令的日志,据我所知,没有办法根据时间段来拉取日志中的部分。
第三:然后我把这个脚本作为patrickr两次运行
patrickr@hostname:~$ bash loop_script.sh
我会给你结果,然后我会解释他们:
作为根(或其他任何patrickr用户)作为patrickr第一个循环后:
**sa -m** 24 0.09re 0.03cp 0avio 894k root 22 0.07re 0.02cp 0avio 853k patrickr 2 0.02re 0.01cp 0avio 1336k **sa -u |grep patrickr** patrickr 0.38 cpu 1336k mem 0 io bash
经过第二次循环patrickr之后:
**sa -m** 30 0.09re 0.03cp 0avio 850k root 27 0.07re 0.02cp 0avio 814k patrickr 3 0.02re 0.01cp 0avio 1178k **sa -u |grep patrickr** patrickr 0.38 cpu 1336k mem 0 io bash patrickr 0.35 cpu 1336k mem 0 io bash patrickr 0.00 cpu 863k mem 0 io ls (I happened to also run ls at patrickr) **sa -u** The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp
以下是你所看到的:
sa -m显示了此服务器加class的所有活动的平均值。 随着更多的命令运行,随着时间的推移,这个文件会变得更大
sa -u | grep patrickr显示特定命令的CPU分钟的系统和用户时间的总和。
运行:sa -u | grep patrickr | awk'BEGIN {TOTAL = 0} {TOTAL = TOTAL + $ 2} END {print TOTAL}'
会给你一个用户帕特里克的总和,但sa -m命令实际上是给你平均值。 看看内存的价值是你需要第二个例子。 他们也是平均的。
如果我把上面列出的patrickr的三个结果,.35 + .37 + .0除以106,然后舍入到最接近的一百,我会得到0.01cp。
0.01cp的结果是安装acct应用程序(即自/ var / log / acct / pacct文件开始跟踪以来)系统上用户patrickr的平均负载,与系统上的所有负载相比较。
Output Fields cpu - sum of system and user time in cpu minutes re - actual time in minutes k - cpu-time averaged core usage, in 1k units k*sec - cpu storage integral (kilo-core seconds) u - user cpu time in cpu minutes s - system time in cpu minutes
一个很好的资源,将帮助你在beginlinux.com (原始链接在这里find)。