如何使用Linux Sleep命令暂停Bash脚本
sleep命令使Linux计算机不执行任何操作。也许违反直觉,但是有时需要一段时间不活动。本文向我们展示如何有效使用此Bash shell命令。
使用sleep
很容易。在命令行上输入sleep
,一个空格,一个数字,然后按Enter。
sleep 5
光标将消失五秒钟,然后返回。发生了什么?在命令行上使用sleep
指示Bash在我们提供的持续时间内暂停处理。在我们的示例中,这是五秒钟。
我们可以将持续时间以天,小时,分钟和秒为单位传递给" sleep"。为此,请添加带有持续时间的后缀" d"," h"," m"或者" s"。要使睡眠暂停一天,四个小时,七分钟零五秒,请使用以下命令:
sleep 1d 4h 7m 5s
后缀" s"(秒)是可选的。没有后缀,sleep
会将任何持续时间视为秒。假设我们想让"睡眠"暂停五分二十秒。此命令的一种正确格式是:
sleep 5m 20
如果忘记在分钟数长度上提供" m"后缀,则将指示" sleep"暂停五秒钟,然后再暂停二十秒钟。因此,"睡眠"将暂停25秒。
许多命令要求我们以特定顺序提供参数,但是" sleep"是非常宽容的。我们可以按任何顺序提供它们,而" sleep"将使它们变得有意义。我们还可以提供浮点数作为参数。例如,0.5h是表明我们希望"睡眠"暂停半小时的有效方法。
以下所有(越来越古怪的)命令都告诉" sleep"暂停10秒钟。
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
在命令前使用睡眠暂停
sleep
命令可用于在命令执行前暂停。此命令将暂停15秒,然后发出提示音。
sleep 15 && echo -en 'ls -R ~/Documents && sleep 5 && cd ~7'
使用睡眠在两个命令之间暂停
我们可以使用sleep命令在两个命令之间进行暂停。此命令将列出文档目录中的文件,暂停五秒钟,然后将当前工作目录更改为主目录:
#!/bin/bash for book in `cat ` 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."
使用睡眠暂停脚本执行
我们可以在shell程序脚本中使用" sleep"命令在准确的时间内暂停脚本的执行。通常,我们会这样做,以便在脚本继续处理之前,有一些过程有足够的时间来完成。我们还可以使用它来限制脚本对另一个资源的请求的速率。
为了确切说明这一点,下面是一个脚本,该脚本使用curl
调出Google Web服务。当我们用一本书的ISBN号查询Web服务时,它会以与该书有关的JSON数据转储作为响应。我们可以通过将数据传递给jq
实用程序来解析数据,以检索书名。为了使脚本不会对Web服务造成压力,它会在两次Web请求之间休眠一秒钟。
创建一个包含以下文本的文件,并将其另存为check_book.sh
。
chmod +x check_book.sh
键入以下命令来设置执行权限并使脚本可执行。
sudo apt-get install curl
该脚本需要curl
和jq
实用程序。如果我们使用Ubuntu或者其他基于Debian的发行版,请使用apt-get将这些软件包安装到系统上。在其他Linux发行版上,请改用Linux发行版程序包管理工具。
sudo apt-get install jq
9781561921271 9781874416646 9781565921672 9781231431088 9781442941591
创建一个包含以下数字的文本文件,并将其另存为books.txt
。
./check_book.sh books.txt
运行check_book.sh
脚本,并将books.txt
文件作为参数传递。