shell记录时间

本文介绍Shell中的两个内置时间变量:$SECONDS用于记录脚本运行时间(单位:秒),$TMOUT用于设置交互式shell超时时间。通过示例演示了这两个变量的实际应用。

shell有两个关于时间的内置变量, 你没用过, 我也没用过, 今天也是第一次见识, 所以加了个笔记, 方便以后查阅.
  $ SECONDS这个脚本已经运行的时间 ( 单位为秒) .
  $ TMOUT 如果$ TMOUT 环境变量被设置为一个非零的时间值, 那么在过了这个指定的时间之后, shell 提示符将会超时, 这会引起一个 logout.
    
zj@ zj : ~ / Script/ cushell/ 08. 11. 15$ cat time . sh
#!/bin/bash

while ( ( 1 ) )
do
sleep 1
echo "This pro run $SECONDS" "s"

if [ [ $ SECONDS - eq 10 ] ] ; then
exit 0
fi
done
zj@ zj : ~ / Script/ cushell/ 08. 11. 15$ . / time . sh
This pro run 1s
This pro run 2s
This pro run 3s
^C



zj@ zj : ~ / Script/ cushell/ 08. 11. 15$ cat time_out. sh
#!/bin/bash


TMOUT= 3

echo "hello what?"
echo "only $TMOUT seconds to answer!"
read - s name
echo $ name
这个跟read - t差不多

### Shell中记录脚本执行时间的方法 在Shell脚本中,可以通过多种方式来记录脚本的执行时间。以下是几种常见的方法及其具体实现: #### 方法一:通过`date`命令计算时间差 可以利用`date`命令获取当前时间戳(单位为秒),并计算脚本开始时间和结束时间之间的时间差。 ```bash #!/bin/bash # 获取脚本开始时间 startTime_s=$(date +%s) # 脚本的主要逻辑部分 sleep 5 # 模拟耗时操作 # 获取脚本结束时间 endTime_s=$(date +%s) # 计算总执行时间(秒) sumTime=$((endTime_s - startTime_s)) echo "脚本执行时间为 ${sumTime} 秒" ``` 这种方法简单直观,适合用于小型脚本或不需要高精度计时的情况[^1]。 --- #### 方法二:使用`time`命令测量脚本执行时间 `time`是一个内置Shell工具,能够精确地测量脚本或其他命令的执行时间。它提供了三个主要指标:`real`、`user` 和 `sys` 时间。 - **`real`** 表示从启动到完成整个过程所需的实际时间。 - **`user`** 表示用户空间代码消耗的CPU时间。 - **`sys`** 表示内核空间代码消耗的CPU时间。 下面是如何使用`time`命令的例子: ```bash #!/bin/bash # 使用 time 测量脚本执行时间 { time ( sleep 5 # 模拟耗时操作 ) ; } 2>&1 | awk '/^real|^user|^sys/{print $0}' ``` 此方法适用于需要更详细的性能分析场景,尤其是当关注的是CPU资源分配情况时[^3]。 --- #### 方法三:结合日志文件记录执行时间 如果希望将脚本的执行时间保存至外部日志文件,则可以在脚本开头和结尾分别写入时间戳,并最终计算两者之差。 ```bash #!/bin/bash LOG_FILE="execution_time.log" # 写入开始时间 echo "$(date '+%Y-%m-%d %H:%M:%S') 开始执行..." >> "${LOG_FILE}" # 主要业务逻辑 sleep 5 # 模拟耗时操作 # 写入结束时间及计算总耗时 endTime=$(date '+%Y-%m-%d %H:%M:%S') startTimestamp=$(grep '开始执行' "${LOG_FILE}" | tail -n 1 | cut -d ' ' -f 1,2) endTimestamp=$(date '+%s') startTimestampSec=$(date -d "${startTimestamp}" '+%s') totalTime=$((endTimestamp - startTimestampSec)) echo "$(date '+%Y-%m-%d %H:%M:%S') 执行完毕,共花费 ${totalTime} 秒." >> "${LOG_FILE}" ``` 这种方式特别适合长期运行的任务或者批量处理作业,在调试与优化阶段非常有用[^2]。 --- ### 注意事项 无论采用哪种方案,请务必确认系统的日期与时钟设置正确无误,因为任何偏差都会影响最终的结果准确性。另外需要注意的是,对于跨平台移植性强的应用来说,某些特定功能可能依赖于操作系统版本差异而表现不一致,因此建议测试前查阅对应文档说明。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值