如何使用Linux Sleep命令暂停Bash脚本

时间:2020-01-09 10:39:33  来源:igfitidea点击:

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

该脚本需要curljq实用程序。如果我们使用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文件作为参数传递。

##代码##