我们可以按天数、小时数和分钟数传递睡眠持续时间,也可以以秒为单位传递睡眠持续时间。要做到这一点,需要在持续时间中加上d、h、m或s的后缀。要使睡眠暂停1天4小时7分5秒,请使用如下命令:
sleep 1d 4h 7m 5s
后缀s(表示秒)是可选的。没有后缀,睡眠将把任何持续时间视为秒。假设你想让睡眠暂停5分20秒。此命令的一种正确格式是:
sleep 5m 20
如果您忘记在分钟持续时间上提供m后缀,您将不会指示睡眠暂停5秒,然后再次暂停20秒。所以睡眠会暂停25秒。
许多命令要求您以特定的顺序提供参数,但是休眠是非常宽容的。你可以按任何顺序提供它们,睡眠会让它们变得有意义。您还可以提供浮点数作为参数。例如,0.5h是表明您希望睡眠暂停半小时的有效方式。
以下所有(越来越古怪的)命令告诉睡眠暂停10秒。
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
使用休眠在命令前暂停
休眠命令可用于在执行命令之前暂停。此命令将暂停15秒,然后发出嘟嘟声。
sleep 15 && echo -en '\007'
使用睡眠在两个命令之间暂停
您可以使用SLEEP在两个命令之间进行暂停。此命令将列出Documents目录中的文件,暂停5秒钟,然后将当前工作目录更改为您的主目录:
ls -R ~/Documents && sleep 5 && cd ~
使用休眠暂停脚本的执行
您可以在shell脚本中使用睡眠命令来暂停脚本的执行一段精确的时间。通常,这样做是为了让一些进程在脚本继续处理之前有足够的时间完成。您还可以使用它来限制脚本向其他资源发出的请求的速率。
为了准确演示这一点,这里有一个使用cURL调用google web服务的脚本。当您使用图书的ISBN号查询Web服务时,它会使用有关该图书的JSON数据的转储进行响应。我们可以通过JQ实用程序传递数据来解析该数据,以检索书名。这样脚本就不会给Web服务带来压力,它会在Web请求之间休眠一秒钟。
创建一个包含以下文本的文件,并将其另存为.check_book.sh。
#!/bin/bash
for book in `cat $1`
do
echo $book":"
curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title'
echo ""
sleep 1
done
echo "All done."
键入以下命令以设置执行权限并使脚本可执行。
chmod +x check_book.sh
该脚本需要curl和jq实用程序。如果您使用的是Ubuntu或其他基于Debian的发行版,请使用apt-get将这些软件包安装到您的系统上。在其他Linux发行版上,请改用您的Linux发行版的包管理工具。
sudo apt-get install curl
sudo apt-get install jq
创建一个包含以下数字的文本文件,并将其另存为books.txt。
9781565921276
9781874416685
9781565921672
9780521431088
9781491941591
运行check_book.sh脚本并将books.txt文件作为参数传入。
./check_book.sh books.txt
每隔一秒向Google web服务发出请求。在查询每个ISBN编号后不久,书名就会出现。
这就是我们要睡觉的全部。check_book.sh脚本的内部工作原理超出了本文的范围。选择该脚本纯粹是为了说明睡眠命令的有效用法。如果您希望了解更多关于脚本的两个主要组成部分的信息,请参考CURL项目页面和JQ在线手册。