Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中将数字转换为分钟:秒.百分之一百的格式?_Bash - Fatal编程技术网

在bash脚本中将数字转换为分钟:秒.百分之一百的格式?

在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

我正在执行最高命令。我需要像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/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包含了什么?