【问题标题】:Get the load, cpu usage and time of executing a bash script获取执行 bash 脚本的负载、cpu 使用率和时间
【发布时间】:2014-10-17 22:03:53
【问题描述】:

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

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

有人可以帮我吗?

还有任何粗略的基准测试建议可以帮助我确定脚本是否负载过多,应该每 15 分钟而不是 5 分钟运行一次。

提前致谢!

【问题讨论】:

    标签: linux bash load crontab resource-utilization


    【解决方案1】:

    您可以使用“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

    这肯定能解决问题。

    【讨论】:

    • 它完成了我的工作。我得到了日志。但我不知道“什么时候”我可以说我正在运行的脚本成本太高而不能每 5 分钟运行一次?还有你的kill 剂量工作。我检查了 top 的 PID 并使用 kill -9 PID_OF_TOP 将其杀死
    • Kill 我已经写好了作品……写的时候要小心。请注意,在促销上运行时不必写“”,在放入脚本时使用它们。并且 ps 之前和最后一个 \ 之后的符号不是单个 Cote.. 它是一个背包 (`)
    【解决方案2】:

    您可以检查以下实用程序

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

    【讨论】:

      【解决方案3】:

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

      对于 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 使用率。 (source)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 2018-07-09
        • 2011-04-10
        相关资源
        最近更新 更多