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

Linux 获取执行bash脚本的负载、cpu使用率和时间,linux,bash,load,crontab,resource-utilization,Linux,Bash,Load,Crontab,Resource Utilization,我有一个bash脚本,我计划根据它在服务器上的负载,使用crontab每隔5或15分钟运行一次 我可以找到运行脚本的时间,但我不知道如何找到加载、内存使用和CPU使用 有人能帮我吗 还有任何关于粗略基准测试的建议,这些建议将帮助我决定脚本是否负载过大,应该每15分钟运行一次,而不是每5分钟运行一次 提前谢谢 您可以检查以下实用程序 pidstat用于CPU负载 pmap用于内存加载 尽管您可能还需要对可执行文件的子进程进行测量,但为了收集汇总信息,您可以检查以下实用程序 pidstat用于

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

我可以找到运行脚本的时间,但我不知道如何找到加载、内存使用和CPU使用

有人能帮我吗

还有任何关于粗略基准测试的建议,这些建议将帮助我决定脚本是否负载过大,应该每15分钟运行一次,而不是每5分钟运行一次


提前谢谢

您可以检查以下实用程序

  • pidstat
    用于CPU负载
  • pmap
    用于内存加载

尽管您可能还需要对可执行文件的子进程进行测量,但为了收集汇总信息,您可以检查以下实用程序

  • pidstat
    用于CPU负载
  • pmap
    用于内存加载
虽然您可能还需要对可执行文件的子进程进行测量,但为了收集汇总信息,您可以使用“top-b”,top给出CPU使用率、内存使用率等, 在脚本中插入这些行,这将在后台处理,并在测试结束后立即终止处理

 ssh server_name "nohup top -b -d 0.5 >> file_name &"   
\top进程将在后台运行,因为&,-d0.5将每隔0.5秒为您提供cpu状态,重定向文件名中的输出以供后面的分析

为了在测试后终止进程,请在脚本中插入以下内容:

ssh server_name "kill \`ps -elf | grep 'top -b' | grep -v grep | sed 's/  */ /g' |cut -d ' ' -f4\`"
您的主测试脚本应该介于top命令和杀死top命令之间。

我假设您是从客户端运行脚本,如果不忽略“ssh server\u name”

如果您是从客户端运行它,由于“ssh”,您将被要求输入密码,以避免出现这种情况

这肯定会解决问题。

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

 ssh server_name "nohup top -b -d 0.5 >> file_name &"   
\top进程将在后台运行,因为&,-d0.5将每隔0.5秒为您提供cpu状态,重定向文件名中的输出以供后面的分析

为了在测试后终止进程,请在脚本中插入以下内容:

ssh server_name "kill \`ps -elf | grep 'top -b' | grep -v grep | sed 's/  */ /g' |cut -d ' ' -f4\`"
您的主测试脚本应该介于top命令和杀死top命令之间。

我假设您是从客户端运行脚本,如果不忽略“ssh server\u name”

如果您是从客户端运行它,由于“ssh”,您将被要求输入密码,以避免出现这种情况


这肯定会解决问题。

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

对于CPU来说,它有点复杂。首先查看
cat/proc/stat | grep'cpu'
(注意空格)。您将看到如下内容:

cpu  2255 34 2290 22625563 6290 127 456

列从左到右依次为“用户、尼斯、系统、空闲”。CPU使用率通常计算为
(用户+尼斯+系统)/(用户+尼斯+系统+空闲)
。然而,这些数字显示了自启动以来CPU做这件事所花费的“时间单位”的数量,因此总是在增加。如果您进行上述计算,您将得到自启动以来的CPU平均使用率。要获得时间点使用情况,您必须采集两个样本,找出它们之间的差异,然后从中计算使用情况。明确地说,这将是样本之间的平均CPU使用率。()

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

对于CPU来说,它有点复杂。首先查看
cat/proc/stat | grep'cpu'
(注意空格)。您将看到如下内容:

cpu  2255 34 2290 22625563 6290 127 456

列从左到右依次为“用户、尼斯、系统、空闲”。CPU使用率通常计算为
(用户+尼斯+系统)/(用户+尼斯+系统+空闲)
。然而,这些数字显示了自启动以来CPU做这件事所花费的“时间单位”的数量,因此总是在增加。如果您进行上述计算,您将得到自启动以来的CPU平均使用率。要获得时间点使用情况,您必须采集两个样本,找出它们之间的差异,然后从中计算使用情况。明确地说,这将是样本之间的平均CPU使用率。它完成了我的工作。我拿到了日志。但是我不知道“什么时候”我可以说我正在运行的脚本太昂贵,不能每5分钟运行一次吗?你的
kill
dosent也可以工作。我检查了top的PID,并使用
kill-9pid\u of\u top
kill将其杀死,我已经编写了正确的工作程序。。。写作时要小心。注意,在promo上运行时不必编写“”,在放入脚本时使用它们。ps之前和last\之后的符号不是单个Cote。。这是一个背包,它完成了我的工作。我拿到了日志。但是我不知道“什么时候”我可以说我正在运行的脚本太昂贵,不能每5分钟运行一次吗?你的
kill
dosent也可以工作。我检查了top的PID,并使用
kill-9pid\u of\u top
kill将其杀死,我已经编写了正确的工作程序。。。写作时要小心。注意,在promo上运行时不必编写“”,在放入脚本时使用它们。ps之前和last\之后的符号不是单个Cote。。它是一个背包(`)