Unix进程'CPU使用率

时间:2013-12-30 19:59:31

标签: bash unix cpu

我需要确定unix进程'CPU使用率......所以,我想编写一个bash脚本,它将启用计时器,运行一些进程,停止计时器。我必须知道该过程如何使用CPU。然后与另一个进程进行比较 - 其中哪些进程使用较少的CPU。尝试this thread,但是使用c ++,我想在bash中这样做。感谢。

1 个答案:

答案 0 :(得分:7)

你想“启用计时器,运行一些进程,停止计时器”。 Bash为时间进程提供内置命令,方便地称为time。例如,要查找date命令运行所需的时间:

$ time date
Mon Dec 30 12:16:22 PST 2013

real    0m0.003s
user    0m0.000s
sys     0m0.004s

上面的第一行输出是date命令的结果。最后三个来自time,告诉您date命令运行了多长时间(实际)以及用户模式和系统模式下花费的CPU时间。

time还可以选择显示CPU使用率,计算为用户和系统时间之和除以实时。使用以下环境变量TIMEFORMAT,我们获得看起来像默认值的输出,除了添加一行显示CPU使用率百分比:

$ TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS\nCPU\t%P%%'
$ time sleep 1

real    0m1.003s
user    0m0.000s
sys     0m0.000s
CPU     0.00%

字符串采用$'...'格式,因此\n被解释为换行符,\t被解释为制表符。如果一个人不想要换行符和标签符号,那么就不需要`$'...'。例如,以下内容将在一行中生成相同的信息:

TIMEFORMAT='real=%R  user=%U sys=%S CPU=%P%%'

在上述TIMEFORMAT规范中,%P以百分比形式提供CPU使用率。为了说明,我还通过删除“3”和“l”选项简化了上面的最后一个规范;因此,时间以默认精度和秒数显示,而不是以更长的分钟和秒数形式显示。有关详细信息,请参阅TIMEFORMATman bash环境变量的说明。