我正在运行此命令:

showjobs -u rsingh70 -n 365 | grep CPUTime

我得到了这个输出:

CPUTime           : 00:00:05
CPUTime           : 00:00:12
CPUTime           : 00:00:01
CPUTime           : 6:12:48:54
CPUTime           : 37:10:39:36
CPUTime           : 05:05:33
CPUTime           : 2:08:49:34
CPUTime           : 61:22:05:34
CPUTime           : 28:16:43:32
CPUTime           : 49:23:58:05
CPUTime           : 02:38:39
CPUTime           : 00:37:00
CPUTime           : 00:37:00
CPUTime           : 00:46:01
CPUTime           : 35:04:10:36
CPUTime           : 00:00:13
CPUTime           : 00:00:12
CPUTime           : 33:16:39:11
CPUTime           : 4:06:10:13
CPUTime           : 00:36:04
CPUTime           : 00:01:08
CPUTime           : 30:01:37:30
CPUTime           : 2:16:48:37

我如何将所有这些时间相加,才能得到所有这些记录时间的总和?

推荐答案

假设时间戳是

HH:MM:SS[:MILLISEC]

你一定要按照Ed和我们的要求解释你的时间戳的规格.

With bash

#!/bin/bash

timestamps=( $(
    showjobs -u rsingh70 -n 365 |
        awk '/CPUTime/{print $NF}'
))

for timestamp in "${timestamps[@]}"; do
    IFS=: read -ra a <<< "$timestamp"
    if ((${#a[@]} == 4)); then
        ((seconds+=10#${a[0]}*3600+10#${a[1]}*60+10#${a[2]}*1+10#${a[3]}/1000))
    else
        ((seconds+=10#${a[0]}*3600+10#${a[1]}*60+10#${a[2]}))
    fi
done

days=$((seconds/86400))
hours=$((seconds/3600%24))
minutes=$((seconds/60%60))
seconds=$((seconds%60))
echo "Total time is $days days $hours hours $minutes minutes $seconds secondes"

With awk

重新使用/borrow 来自Glenn的END部分优雅代码

showjobs -u rsingh70 -n 365 | awk '
    /CPUTime/ {
        split($NF, a, ":")
        if (NF == 5) {
            seconds+=a[1]*3600+a[2]*60+a[3]*1+a[4]/1000
        }
        else {
            seconds+=a[1]*3600+a[2]*60+a[3]
        }
    }
    END {
        s = seconds % 60; mins = (seconds - s)/60
        m = mins % 60; hrs = (mins - m)/60
        h = hrs % 24
        days = (hrs - h)/24
        printf "%d days %02d hours %02d minutes %02d seconds\n", days, h, m, s
  }
'

Output

12 days 11 hours 42 minutes 34 seconds

Linux相关问答推荐

Aarch64在Linux上是否有红色区域,如果有,是16个字节还是128个字节?

PERF显示不应该执行指令的内核的用户空间周期

shell中两个日期的天数差异

Docker运行错误:exec/app/backend/server:没有这样的文件或目录

条件句if的正确写法是怎样的?

使用文件名重新打开 linux 管道(仅从一侧)

RabbitMQ 安装后没有自动启动

将行转换为一条

Linux 系统调用文档

文件未在脚本中使用 cp 命令复制到 Docker 容器中

使用 awk 将索引列添加到 csv

如何在没有 IDE 的情况下构建和部署三星 SmartTV 应用程序(例如:在 Linux 上)

为 django 项目安装 memcached

为什么可执行文件操作系统依赖于?

如何知道linux调度器时间片?

限制程序在 Linux 中运行的时间

System.currentTimeMillis 是否总是返回一个值 >= 以前的调用?

Linux如何确定下一个PID?

Bash 将 awk 的输出捕获到数组中

Linux shell 中的排序和唯一性