如何在 Linux 中使用“sleep”命令 [6 个实用示例]
简介:在本指南中,我们将讨论 sleep 命令的实际示例。遵循本指南后,Linux 程序员将能够使用 sleep 命令编写强大的 shell 脚本。
Linux 程序员和系统管理员更喜欢编写shell 脚本来自动执行简单的任务。但是,编写一个健壮的脚本并不是一件容易的事。我们需要处理许多特殊情况,例如 – 重试机制、调试、日志记录、错误报告等。
[ 你可能还喜欢:在 Linux 中编写有效 Bash 脚本的 10 个有用技巧]
除此之外,很多时候,我们需要模拟命令执行的延迟来测试超时场景。同样,我们需要在脚本中引入延迟来实现重试机制。sleep 命令是处理此类场景的完美解决方案。
在本指南中,我们将讨论sleep命令的用法。顾名思义,sleep命令用于延迟下一个命令的执行。它使调用程序休眠指定的时间。
因此,让我们通过 Linux 中的实际示例 进一步了解睡眠命令。
sleep 命令语法
sleep命令的语法非常简单,因为它接受一个带有可选后缀的强制参数:
$ sleep <NUMBER>[SUFFIX]
值得注意的是,在上面的语法中,NUMBER和SUFFIX之间没有空格。
1.如何延迟Linux命令执行
默认情况下,sleep命令会等待几秒钟。为了理解这一点,让我们在sleep命令之前和之后打印当前时间:
例如,以下命令打印当前时间后等待5秒:
$ date '+%r'; sleep 5; date '+%r'
在这个例子中,我们使用分号(;)
来分隔每个命令。
2. 如何编写等待 N 分钟的命令
可选地,sleep命令允许我们使用后缀指定时间单位。我们可以在 sleep 命令中使用以下后缀:
s
– 以秒为单位指定时间单位。m
– 以分钟为单位指定时间单位。h
– 以小时为单位指定时间单位。d
– 以天为单位指定时间单位。
因此,我们使用'm'
后缀来睡眠1分钟:
$ date '+%r'; sleep 1m; date '+%r'
需要注意的重点是NUMBER和SUFFIX之间不应该有任何空格。
3.如何让命令休眠X分钟和X秒
我们可以在sleep命令中使用多个后缀。在这种情况下,时间长度是通过将所有值相加来计算的。
为了理解这一点,让我们使用以下命令休眠1分20秒:
$ date '+%r'; sleep 1m 20s; date '+%r'
在上面的例子中,我们使用了两个不同的后缀。但是,我们也可以使用相同的后缀。
例如,我们可以使用后缀2s和3s来休眠5秒:
$ date '+%r'; sleep 2s 3s; date '+%r'
4. 如何在 sleep 命令中使用浮点数
另外,sleep命令还接受浮点数作为输入。我们可以使用此方法实现少于一秒的休眠。
例如,我们可以使用0.5s值来休眠半秒:
$ date '+%r'; sleep 0.5s; date '+%r'
在上面的输出中,我们可以看到date 命令显示秒时间单位的相同值。
除此之外,我们还可以使用带有其他后缀的浮点值。例如,我们可以使用0.5m值来休眠30秒:
$ date '+%r'; sleep 0.5m; date '+%r'
5.如何使用 sleep 命令模拟闹钟
在前面的几个例子中,我们看到了如何使用sleep命令来延迟下一个命令的执行。我们可以用这个技巧来模拟闹钟。
因此,让我们使用以下命令在 5 秒后设置闹钟:
$ sleep 5; cvlc alarm.mp3
上述命令等待 5 分钟后,使用VLC 媒体播放器打开alarm.mp3文件。与任何其他 Linux 命令一样,我们可以使用组合键来停止 VLC 媒体播放器。ctrl+c
在这个例子中,我们使用了 VLC 媒体播放器,但也可以采用任何其他 Linux 媒体播放器或声音实用程序来实现相同的效果。
6.如何使用 sleep 命令模拟数字时钟
为了模拟数字时钟,我们可以每秒无限循环运行sleep命令。让我们通过一个例子来理解这一点。
首先我们编写一个简单的 shell 脚本,名为digital-clock.sh,代码如下:
#!/bin/bash while [ 1 ] do clear tput cup 5 30 date '+%r' sleep 1 done
在此脚本中,我们使用tput命令将光标放在第 5行第 30列。
现在,让我们运行脚本并查看结果:
$ chmod +x digital-clock.sh $ ./digital-clock.sh
最后,我们可以使用ctrl+c
组合键来停止脚本的执行。
在本指南中,我们讨论了如何使用sleep命令延迟下一个命令的执行。Linux 程序员可以使用sleep命令编写强大的 shell 脚本。
您知道 Linux 中 sleep 命令的其他最佳示例吗?请在下面的评论中告诉我们您的观点。