我一直在研究使用进程记帐来跟踪运行在我们环境中存在问题的脚本的各种用户和站点,而不是尝试执行诸如定期刮顶之类的事情。
不是特别清楚的是哪些字段真正表示使用的 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”列之间的区别?
谢谢!
让我用一个例子来帮助解释上面的结果:
首先:我创建了一个以用户 patrickr 身份运行的 bash 脚本,该脚本旨在为系统施加足够的负载以引起注意。
第二:我卸载然后重新安装了 acct,以便我在 /var/log/acct 中的文件是新鲜的。创建 /var/log/acct/pacct 文件的副本,以便将来您可以使用格式正确的文件轻松截断文件(您不能只是删除并重新创建文件 - 如果您这样做,sa 将停止工作)。请注意,此文件是系统上所有命令的日志,据我所知,无法根据时间段提取日志中的部分。
第三:然后我以 patrickr 的身份运行了这个脚本两次
我会给你结果,然后我会解释它们:
以 root 身份运行(或除 patrickr 之外的任何用户)在以 patrickr 身份进行第一次循环后:
在作为 patrickr 的第二个循环之后:
这是您所看到的:
sa -m 显示此服务器超时的所有活动的平均值。随着更多命令的运行,该文件会随着时间的推移而变大。
萨-u | grep patrickr 以 cpu 分钟为单位显示特定命令的系统和用户时间的总和。
运行: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
将为您提供用户 patrick 的总和,但 sa -m 命令实际上是为您提供平均值。看看内存值是否需要第二个示例。他们也是平均的。
如果我将上面列出的 patrickr 的三个结果相加,0.35 + .37 + .0 除以 106 并四舍五入到最接近的百分之一,我将得到 0.01cp。
0.01cp 的结果是用户 patrickr 在系统上的平均负载与安装 acct 应用程序时系统上的所有负载相比(即自从文件 /var/log/acct/pacct 开始跟踪以来)。
beginlinux.com是一个可以帮助您的好资源(原始链接在这里)。