sleep 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于 Shell 内建命令族(见Shell 内建命令)。让脚本"歇一会儿"最朴素的办法。
sleep 让当前进程暂停指定的时间,然后继续。单位默认秒,支持小数和 s/m/h/d 后缀。脚本里做轮询间隔、重试等待全靠它。
一、基本用法
bash
sleep 3 # 暂停 3 秒
sleep 0.5 # 暂停半秒(支持小数)
sleep 2m # 暂停 2 分钟
sleep 1h 30m # 多个参数相加:1 小时 30 分默认单位是秒,可加后缀
s(秒)/m(分)/h(时)/d(天)。多个参数会累加(sleep 1h 30m= 90 分钟)。小数在需要精细间隔(如 0.1s 轮询)时有用。
二、脚本里的间隔与重试
bash
for i in $(seq 1 5); do
curl -s health && break
echo "未就绪,2 秒后重试"
sleep 2
done典型用法:服务起来前轮询健康检查,每次失败
sleep一下再试,避免打爆。也常用于定时任务的"错峰"——多个脚本错开启动时间。
三、可中断性
bash
sleep 100 # 期间按 Ctrl-C 立即终止(返回非 0)
sleep 100 & # 后台睡,kill %1 可杀
sleep期间收到SIGINT(Ctrl-C)会立即退出并返回非 0,脚本里能据此中止流程。后台 sleep 用 kill 结束。
四、与 timeout 区别
bash
sleep 5 # 自己睡 5 秒
timeout 5 long_cmd # 给 long_cmd 设 5 秒上限,到时杀掉它(见 timeout 相关)
sleep是"我自己暂停",timeout 是"限制别的命令的运行时长"。别混:想限制某命令用 timeout,想单纯等待用 sleep。
相关命令
一句话总结
sleep = 暂停指定时长:默认秒、支持小数 0.5 和后缀 s/m/h/d、多参数累加(sleep 1h 30m);脚本里做重试间隔/轮询等待;Ctrl-C 可中断;与 timeout(限制别的命令时长)不同,sleep 是"自己睡"。