【奇技淫巧】Linux | 时光之主-另类的延迟执行sleep

976 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

上文有讲到了《延迟执行at命令》,它能延迟执行命令,且只能延迟执行一次。这篇文章简单分析另外一个非常冷门的命令sleep,它同样能够将目前的动作延迟一段时间后再执行。

在使用sleep命令之前,我们先来观察下面的一组命令。

$touch new.file;rm new.file

这个以分号相隔离的多条命令,会依次执行,即前面的指令执行完成,后面的指令就会跟着执行,先执行的结果不会对后续的操作有影响。这种方式跟着管道操作比较相似,但并不是管道,对于管道操作,前面的命令的操作的输出会作为接下来命令执行的输入。
这条命令执行的结果如下图所示。

image.png 输出结果表示确实先创建了文件new.file,然后执行删除文件操作,操作之前有提示确认信息。
如果我们并不想立刻马上删除文件,想延迟一段时间执行怎么办呢?请使用sleep命令

$touch new.file;sleep 30;rm new.file

上面的脚本表示,创建新文件,延迟暂停30秒后,再删除这个文件。是不是用法很简单。语法如下。

sleep [--help] [--version] number[smhd]

默认地,number数值的单位表示秒,可省略不写。我们也可以加上单位m h d,分别表示“分钟”、“小时”、“天数”。比如刚才的脚本可改成

$touch new.file;sleep 30m;rm new.file

表示文件创建完成后,暂停30分钟再删除文件。

最近不是流行废话学吗,我们也可以写一个有趣的脚本。

$date;sleep 30m;date

显示目前时间后延迟 1 分钟,之后再次显示时间。是不是画蛇添足!


是不是没看够,下一篇文章讲用法趣多多的crontab命令。