Linux常用命令学习笔记:sleep

命令概述

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:定期执行命令并显示输出

作 者:南烛
链 接:https://www.itnotes.top/archives/563
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇