我有一个 bash 脚本,我计划根据它在服务器上的负载使用 crontab 每 5 或 15 分钟运行一次。
我可以找到运行脚本的时间,但加载、内存使用和 CPU 使用我不知道如何找到。
有人能帮我吗?
还有任何粗略的基准测试建议可以帮助我确定脚本是否负载过大并且应该每 15 分钟而不是 5 分钟运行一次。
提前致谢!
我有一个 bash 脚本,我计划根据它在服务器上的负载使用 crontab 每 5 或 15 分钟运行一次。
我可以找到运行脚本的时间,但加载、内存使用和 CPU 使用我不知道如何找到。
有人能帮我吗?
还有任何粗略的基准测试建议可以帮助我确定脚本是否负载过大并且应该每 15 分钟而不是 5 分钟运行一次。
提前致谢!
您可以使用“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”,您将被要求输入密码,为了避免这种情况,请遵循以下 3 个简单步骤
这肯定会解决问题。
对于内存,使用free -m
. +/- buffers/cache
您的实际可用内存是(以兆字节为单位-m
)(源)旁边的第二个数字。
对于CPU,它有点复杂。首先看cat /proc/stat | grep 'cpu '
(注意空格)。你会看到这样的东西:
cpu 2255 34 2290 22625563 6290 127 456
列是从左到右,“用户,nice,系统,空闲”。CPU 使用率通常计算为(user+nice+system) / (user+nice+system+idle)
. 但是,这些数字显示了 CPU自启动以来花费在执行该操作上的“时间单位”的数量,因此一直在增加。如果您要进行上述计算,您将获得自启动以来的 CPU 使用率平均值。要获得时间点使用情况,您必须抽取 2 个样本,找出它们的差异,并从中计算使用情况。需要明确的是,这将是您的样本之间的平均CPU 使用率。(来源)