命令概述
sleep命令用于让当前进程暂停执行指定的时间。该命令常用于shell脚本中,用于实现延时、轮询等待、定时执行等场景。
语法格式
sleep 时间[单位]
时间单位
- 秒:默认单位,直接使用数字
- s:秒(seconds)
- m:分钟(minutes)
- h:小时(hours)
- d:天(days)
使用示例
1. 暂停指定秒数
sleep 5 # 暂停5秒
sleep 10s # 暂停10秒
2. 暂停分钟
sleep 1m # 暂停1分钟
sleep 2m 30s # 暂停2分30秒
3. 暂停小时
sleep 1h # 暂停1小时
sleep 1h 30m # 暂停1小时30分钟
4. 暂停天
sleep 1d # 暂停1天
sleep 2d 12h # 暂停2天12小时
实际应用场景
1. 脚本延时执行
#!/bin/bash
echo "开始执行任务..."
sleep 3
echo "3秒后继续执行..."
2. 轮询等待服务启动
#!/bin/bash
echo "等待MySQL服务启动..."
while ! systemctl is-active mysql >/dev/null 2>&1; do
echo "服务未启动,等待5秒..."
sleep 5
done
echo "MySQL服务已启动"
3. 定时备份
#!/bin/bash
while true; do
# 执行备份操作
echo "开始备份: $(date)"
cp -r /data /backup/data_$(date +%Y%m%d_%H%M%S)
# 等待1小时
sleep 1h
done
4. 控制命令执行频率
#!/bin/bash
for i in {1..10}; do
echo "执行第 $i 次操作: $(date)"
# 执行具体操作
curl -s http://example.com/api/status > /dev/null
# 每2秒执行一次
sleep 2
done
5. 配合后台任务
#!/bin/bash
# 启动后台任务
echo "启动后台任务..."
nohup ./long_running_task.sh &
# 等待10秒让后台任务初始化
sleep 10
# 检查任务状态
if ps aux | grep -q "long_running_task.sh"; then
echo "后台任务启动成功"
else
echo "后台任务启动失败"
fi
注意事项
- 时间参数可以是整数或小数
- 支持多个时间单位组合使用
- 最小时间精度为0.001秒(1毫秒)
- 在脚本中使用时,sleep会阻塞当前进程
- 可以使用Ctrl+C中断sleep命令
- 在后台任务中使用时,建议配合nohup命令
相关命令
wait:等待后台进程完成at:定时执行任务crontab:定时任务调度watch:定期执行命令并显示输出