获取执行bash脚本的负载,cpu使用和时间

时间:2014-10-17 12:35:04

标签: linux bash load crontab resource-utilization

我有一个bash脚本,我打算每隔5或15分钟使用crontab根据它放在服务器上的负载运行。

我可以找到运行脚本的时间,但负载,内存使用情况和CPU使用率我不知道如何找到。

有人可以帮助我吗?

此外,粗略基准的任何建议都将帮助我确定脚本是否施加过多负荷,并且应该每15分钟而不是5分钟运行。

提前致谢!

3 个答案:

答案 0 :(得分:4)

你可以使用“top -b”,top给出CPU使用率,内存使用率等, 在脚本中插入这些行,这将在后台处理,并在测试结束后立即终止该过程。

 ssh server_name "nohup top -b -d 0.5 >> file_name &"   

\ top进程将在后台运行,因为&, - d 0.5将为您提供每0.5秒的cpu状态,将输出重定向到file_name以供后面的分析。

用于在测试后终止进程,在脚本中插入以下内容,

ssh server_name "kill \`ps -elf | grep 'top -b' | grep -v grep | sed 's/  */ /g' |cut -d ' ' -f4\`"

您的主要测试脚本应位于top命令和命令之间,以便杀死top。

我假设您正在从客户端运行脚本,如果不是忽略“ssh server_name”。

如果您是从客户端运行它,由于“ssh”,系统会要求您输入密码,以避免出现follow these 3 simple steps

这肯定会解决问题。

答案 1 :(得分:1)

您可以查看以下实用程序

虽然您可能还需要对可执行文件的子进程进行测量,但是为了收集汇总信息

答案 2 :(得分:1)

对于记忆,请使用free -m。您的实际可用内存是+/- buffers/cache旁边的第二个数字(以-m为单位的兆字节数)(source)。

对于CPU来说,它有点复杂。首先看cat /proc/stat | grep 'cpu '(注意空格)。你会看到这样的事情:

cpu  2255 34 2290 22625563 6290 127 456

列从左到右,"用户,不错,系统,空闲"。 CPU使用率通常计算为(user+nice+system) / (user+nice+system+idle)。但是,这些数字表示"时间单位的数量"自从启动>后,CPU已经花了很多时间做这件事,因此总是在增加。如果您要进行上述计算,则自启动后您将获得平均CPU使用率。要获得时间点使用,您必须采取2个样本,找出它们的差异,并从中计算使用情况。需要明确的是,这将是您的样本之间的平均 CPU使用率。 (source