在bash脚本中将数字转换为分钟:秒.百分之一百的格式?
我正在执行最高命令。我需要像top命令一样计算Time+字段。 现在,我正在获取utime和STIM,然后我将系统置于睡眠状态,然后再次获取这些值。我把4个量加起来,然后把总数除以100,得到一个数字。以下是代码供参考:在bash脚本中将数字转换为分钟:秒.百分之一百的格式?,bash,Bash,我正在执行最高命令。我需要像top命令一样计算Time+字段。 现在,我正在获取utime和STIM,然后我将系统置于睡眠状态,然后再次获取这些值。我把4个量加起来,然后把总数除以100,得到一个数字。以下是代码供参考: oldutime=$(awk '{print $14}' /proc/$word/stat ) oldstime=$(awk '{print $15}' /proc/$word/stat ) newutime=$(awk '{print $14}' /proc/$word/s
oldutime=$(awk '{print $14}' /proc/$word/stat )
oldstime=$(awk '{print $15}' /proc/$word/stat )
newutime=$(awk '{print $14}' /proc/$word/stat )
newstime=$(awk '{print $15}' /proc/$word/stat )
total_time=`expr $oldutime + $oldstime + $newutime + $newstime`
timee=$((total_time / 100))
在这之后,我需要格式化这个数字,使它看起来像顶部程序中时间+字段(分:秒.hunderehts)的输出,我需要帮助。我正在查看date
命令,但无法理解它
编辑:
所需格式:0:00.24(分:秒。百分位)
输出:360以下scriptlet可用于以毫秒为单位格式化时间: 代码假设计算了总时间-每个操作问题,或者修改注释(使用$(…)而不是expr)
# Calculate total time in tick
total_time=...
ticks_per_sec=$(getconf CLK_TCK)
# Seconds times 100
s100=$((total_time*100/ticks_per_sec))
printf '%d:%02d.%02d\n' $((s100/100/60)) $((s100/100%60)) $((s100%100))
显示$total_time和所需的输出。不要使用
expr
;改为使用$(…)
。但是请注意,两者都不做浮点运算。从man proc
中,我了解到/proc/[pid]/stat
的字段14和15是以时钟节拍测量的,我几乎不知道它是什么,但我打赌它的时间长度不是一个物理常数,因此不能通过乘以数字将其转换为时间;然后将这次的整数除以100。那么您认为timee包含了什么?