我正在编写一个shell脚本来跟踪某些正在运行的程序的开始和结束时间。我需要脚本以秒为单位打印可读的开始和结束时间以及时间成本。
为了计算成本,我写了类似的东西
START=$(date +%s)
# ................
END=$(date +%s)
DIFF=$(( $END - $START ))
echo "Start Time: $START" >> $LOGFILE 2>&1
echo "End Time: $END" >> $LOGFILE 2>&1
echo "Running time: $DIFF seconds" >> $LOGFILE 2>&1
这适用于计算,但$ START和$ END只能打印为秒数。
如果我像下面那样定义它们,它能够打印可读日期格式
START=$(date +%c)
END=$(date +%c)
然而,DIFF = $(($ END - $ START))不再为他们工作。
因此,我想知道是否有任何shell脚本解决方案,以便我可以用定义的格式打印日期并用它们进行一些计算。
BTW,我正在使用AIX。
答案 0 :(得分:2)
如果你有GNU日期,你可以使用纪元时间
date -d @$START +%c
否则,请执行
read start start_display < <(date +"%s %c")
# ...
read end end_display < <(date +"%s %c")
diff=$(( $end - $start ))
echo "Start time: $start_display"
如果您没有使用能够进行过程替换的shell,
set -- $(date +"%s %c")
start=$1; shift
start_display=$*
如果您使用bash,请利用内置的$ SECONDS变量,该变量从零开始,用于新的bash过程并逐步递增。
start_display=$(date)
# ...
echo "Start Time: $start_display"
echo "End Time: $(date)"
echo "Running time: $SECONDS seconds"
答案 1 :(得分:0)
您可以使用 date -d @Seconds 将秒转换为日期。 例如:
$ date +%s
1377095983
$ date -d @1377095983
Wed Aug 21 20:09:43 IST 2013