本文目录导读:

在Shell脚本中显示执行耗时统计,有几种常用的方法:
使用 time 命令(最简单)
测量单个命令
time your_command
测量整个脚本
time ./your_script.sh
输出示例:
real 0m2.345s
user 0m1.234s
sys 0m0.567s
使用内置变量 SECONDS
#!/bin/bash # 记录开始时间 SECONDS=0 # 你的脚本内容 echo "开始执行..." sleep 2 echo "继续执行..." sleep 1 # 计算耗时 duration=$SECONDS echo "总耗时: $((duration / 60)) 分 $((duration % 60)) 秒"
使用 date 命令(精确到毫秒)
#!/bin/bash # 记录开始时间 start_time=$(date +%s%N) # 你的脚本内容 echo "开始执行..." sleep 2 echo "继续执行..." sleep 1 # 计算耗时 end_time=$(date +%s%N) elapsed=$(( ($end_time - $start_time) / 1000000 )) # 转换为毫秒 echo "总耗时: $elapsed 毫秒"
封装成函数(推荐)
#!/bin/bash
# 计时函数
timer_start() {
timer_start_time=$(date +%s%N)
echo "开始计时..."
}
timer_end() {
local end_time=$(date +%s%N)
local elapsed=$(( ($end_time - $timer_start_time) / 1000000 ))
local seconds=$((elapsed / 1000))
local milliseconds=$((elapsed % 1000))
if [ $seconds -ge 60 ]; then
local minutes=$((seconds / 60))
local secs=$((seconds % 60))
echo "耗时: ${minutes}分${secs}.${milliseconds}秒"
else
echo "耗时: ${seconds}.${milliseconds}秒"
fi
}
# 使用示例
timer_start
# 你的脚本逻辑
echo "执行任务1..."
sleep 2
echo "执行任务2..."
sleep 1
timer_end
多个阶段的耗时统计
#!/bin/bash
log_time() {
local current=$(date +%s%N)
local elapsed=$(( ($current - $start_time) / 1000000 ))
local seconds=$((elapsed / 1000))
local milliseconds=$((elapsed % 1000))
echo "[${seconds}.${milliseconds}s] $1"
}
start_time=$(date +%s%N)
echo "开始执行..."
log_time "脚本启动"
sleep 1
log_time "任务1完成"
sleep 2
log_time "任务2完成"
sleep 0.5
log_time "脚本结束"
使用 trap 自动统计(高级)
#!/bin/bash
# 自动计时器
auto_timer() {
local end=$(date +%s%N)
local elapsed=$(( ($end - $start_time) / 1000000 ))
local seconds=$((elapsed / 1000))
echo ""
echo "脚本执行完毕,总耗时: ${seconds}秒"
}
start_time=$(date +%s%N)
trap auto_timer EXIT
echo "开始执行..."
sleep 2
echo "正在处理..."
sleep 1
echo "处理完成"
格式化输出(带颜色)
#!/bin/bash
# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
start_time=$(date +%s%N)
echo "开始执行..."
# 你的脚本逻辑
for i in {1..3}; do
sleep 1
echo -e "${YELLOW}步骤 $i 完成${NC}"
done
# 计算并显示耗时
end_time=$(date +%s%N)
elapsed=$(( ($end_time - $start_time) / 1000000 ))
seconds=$((elapsed / 1000))
milliseconds=$((elapsed % 1000))
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN}总耗时: ${seconds}.${milliseconds} 秒${NC}"
echo -e "${GREEN}================================${NC}"
使用建议
- 简单脚本:使用
time命令即可 - 需要精确计时:使用
date +%s%N获取纳秒级时间 - 需要多次计时:封装成函数重复使用
- 性能监控:可以记录每个步骤的耗时
- 调试临时用:直接添加
time命令前缀
选择哪种方式主要看你的具体需求,简单的脚本用 time 命令最方便,复杂的脚本建议使用封装好的函数。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播