如何对showjobs输出的Linux格式CPUTime进行求和计算?
计算Linux格式CPU时间总和的方法
你可以用awk脚本直接处理命令输出,自动识别两种时间格式(HH:MM:SS和DD:HH:MM:SS),将所有时间转换成秒数累加后,再转回标准的天时分秒格式:
showjobs -u rsingh70 -n 365 | grep CPUTime | awk -F': ' '{ # 分割时间字符串为数组 split($2, time_parts, ":") # 处理HH:MM:SS格式 if (length(time_parts) == 3) { total_secs += time_parts[1] * 3600 + time_parts[2] * 60 + time_parts[3] } # 处理DD:HH:MM:SS格式 else if (length(time_parts) == 4) { total_secs += time_parts[1] * 86400 + time_parts[2] * 3600 + time_parts[3] * 60 + time_parts[4] } } END { # 将总秒数转换为天、时、分、秒 days = int(total_secs / 86400) remaining = total_secs % 86400 hours = int(remaining / 3600) remaining %= 3600 mins = int(remaining / 60) secs = remaining % 60 # 格式化输出,补全前导零 printf "总CPU时长: %d:%02d:%02d:%02d\n", days, hours, mins, secs }'
脚本说明:
-F': ':指定分隔符为:加空格,精准提取每行的时间部分split():把时间字符串按:拆分成数组,通过数组长度判断时间格式- 时间转秒数:利用时间单位换算(1天=86400秒,1小时=3600秒,1分钟=60秒)累加总秒数
- END块:将总秒数反向转换为天时分秒,用
printf保证小时、分钟、秒数为两位数字(不足补零)
内容的提问来源于stack exchange,提问作者anikaM
相关产品推荐
相关产品推荐

