首頁 > 軟體

如何使用Linux Sleep命令暫停Bash指令碼

2020-06-16 16:36:08

Sleep是一個命令列實用程式,允許您將呼叫進程掛起一段指定的時間。也就是說,sleep命令在給定的時間內暫停下一個命令的執行。

當在bash shell指令碼中使用sleep命令時,例如在重試失敗的操作或迴圈時,該命令尤其有用。

在本教學中,我們將向您展示如何使用Linux sleep命令。

如何使用Sleep命令

sleep命令的語法如下:

sleep NUMBER [SUFFIX]...

NUMBER可以是正整數或浮點數。

SUFFIX可以是下列之一:

  • s  - 秒(預設)
  • m  - 分鐘
  • h  - 小時
  • d  - 天

當沒有使用SUFFIX時,預設為秒。

當指定兩個或多個引數時,總時間量等於它們的值之和。

下面是幾個簡單的例子,演示如何使用sleep命令:

暫停7秒鐘:

  • sleep 7

暫停0.7秒鐘:

  • sleep 0.7

暫停1分50秒:

  • sleep 2m 30s

Bash指令碼範例

以下是如何在Bash指令碼中使用sleep命令的最基本範例。 執行指令碼時,它將以HH:MM:SS格式列印當前時間。 然後sleep命令將暫停指令碼5秒鐘。 當指定的時間段過去後,指令碼的最後一行將再次列印當前時間。

#!/bin/bash

# 開始時間
echo "開始時間" 
date +"%H:%M:%S"

# 暫停8秒
sleep 8

# 結束時間
echo "結束時間" 
date +"%H:%M:%S"

輸出看起來像這樣(如下圖):

開始時間
06:06:07
結束時間
06:06:15

我們再來看一個更高階的例子。

#!/bin/bash

while :
do
  if ping -c 1 www.linuxidc.com &> /dev/null
  then
    echo "Linux公社www.linuxidc.com正在服務中"
    break
  fi
  sleep 5
done

上面的指令碼將每隔5秒檢查主機是否線上,當主機上線時,指令碼會通知您並停止。

執行指令碼,如下圖:

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
Linux公社www.linuxidc.com正在服務中

指令碼的工作原理:

  • 在第一行中,我們建立了一個無限while迴圈。
  • 然後我們使用ping命令來確定IP地址為ip_address的主機是否可存取。
  • 如果主機可存取,則指令碼將回顯“主機已聯機”並終止迴圈。
  • 如果主機無法存取,則sleep命令會暫停指令碼5秒鐘,然後迴圈從頭開始。

總結

到目前為止,您應該能很好地理解如何使用Linux sleep命令,還不懂,那就不要問我了。

sleep命令是最簡單的shell命令之一,只接受一個用於指定sleep間隔的引數。


IT145.com E-mail:sddin#qq.com