Linux 延时命令详解
在 Linux 系统中,最常用且最标准的延时命令是 sleep,它允许用户在脚本或命令行中暂停执行一段时间,直到指定的时长结束。
核心命令:sleep
sleep 命令用于让当前进程暂停运行。
基本语法:sleep NUMBER[SUFFIX]
支持的时间单位(SUFFIX):
- s: 秒 (seconds) 默认单位
- m: 分钟 (minutes)
- h: 小时 (hours)
- d: 天 (days)
常用示例:
- 延时 5 秒:
sleep 5或sleep 5s - 延时 2 分钟:
sleep 2m - 延时 1 小时 30 分钟:
(部分版本支持多个参数累加)sleep 1h 30m
- 实现毫秒级延时:
sleep 0.5(延时 0.5 秒,即 500 毫秒)
实际应用场景
1 在 Shell 脚本中创建循环等待
常用于监控某个进程是否启动,或者在尝试重启服务前给予缓冲时间。
while true; do
echo "检查服务状态..."
# 检查某个进程是否存在
pgrep mysql > /dev/null
if [ $? -eq 0 ]; then
echo "服务已启动"
break
fi
echo "服务未启动,5秒后重试..."
sleep 5
done
2 简单的定时任务执行
如果你不需要复杂的 crontab 配置,只想在一段时间后执行某个命令:sleep 10m && echo "十分钟时间到,开始执行备份"
其他相关延时/超时工具
除了 sleep,在某些特定场景下,你可能需要以下工具:
-
timeout 命令:
用于限制一个命令运行的最长时间,如果命令在指定时间内没运行完,则强制终止。- 示例:
timeout 10s ping google.com(ping 超过 10 秒仍未停止,则强制结束)。
- 示例:
-
usleep (微秒级延时):
在一些旧版本的 Linux 中,usleep用于实现微秒(1/1,000,000 秒)级别的延时,但在现代 GNU 系统中,sleep已经支持浮点数(如sleep 0.001),usleep已逐渐被替代。
总结对比
| 命令 | 最小精度 | 主要用途 | 特点 |
|---|---|---|---|
| sleep | 毫秒 (0.001s) | 暂停当前进程 | 简单、通用、支持多种时间单位 |
| timeout | 秒 | 限制命令执行时长 | 侧重于“超时强制停止”而非单纯等待 |
| usleep | 微秒 ($mu s$) | 极高精度延时 | 较老旧,现多被 sleep 浮点数取代 |
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/488156.html



