我有一个bash脚本,我打算每隔5或15分钟使用crontab根据它放在服务器上的负载运行。
我可以找到运行脚本的时间,但负载,内存使用情况和CPU使用率我不知道如何找到。
有人可以帮助我吗?
此外,粗略基准的任何建议都将帮助我确定脚本是否施加过多负荷,并且应该每15分钟而不是5分钟运行。
提前致谢!
答案 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)