網(wǎng)站首頁 編程語言 正文
1. 背景
當(dāng)用戶在 Linux 中發(fā)出多個(gè)命令序列時(shí),命令會(huì)立即一個(gè)接一個(gè)或同時(shí)執(zhí)行(例如,tee 命令)。但是,有時(shí)需要推遲命令的執(zhí)行并為系統(tǒng)提供足夠的時(shí)間來產(chǎn)生預(yù)期的結(jié)果。
2. 簡介
sleep命令將下一個(gè)命令的調(diào)用進(jìn)程掛起一段指定的時(shí)間。當(dāng)以下命令的執(zhí)行取決于前一個(gè)命令的成功完成時(shí),此屬性很有用。
3. 語法
sleep [number]
默認(rèn)情況下,系統(tǒng)讀取之后sleep的數(shù)字作為秒數(shù)。要指定其他時(shí)間單位,請使用以下語法:
sleep [number][unit]
sleep 1h 2m 0.5s
該sleep命令接受浮點(diǎn)數(shù)。它允許多個(gè)值相加,以計(jì)算sleep.
可用單位有:
- s– 秒
- m- 分鐘
- h- 小時(shí)
- d- 天
要sleep在開始后和指定的等待時(shí)間結(jié)束前停止,請按Ctrl + C。
要查看該sleep命令的幫助,請鍵入:
sleep --help
有關(guān)版本詳細(xì)信息,請鍵入:
sleep --version
4. 與 wait 區(qū)別
bash wait 命令是一個(gè)Shell 命令,它等待后臺運(yùn)行的進(jìn)程完成并返回退出狀態(tài)。與等待指定時(shí)間的 sleep 命令不同,wait 命令等待所有或特定的后臺任務(wù)完成。
5. 實(shí)例
5.1 設(shè)置警報(bào)
用于sleep告訴系統(tǒng)在一定時(shí)間后播放 mp3 文件。
sleep 7h 30m && mplayer alarm.mp3
5.2 終端中的延遲命令
sleep對于強(qiáng)制執(zhí)行兩個(gè)命令之間的時(shí)間很有用,以一秒的間隔執(zhí)行:
$ sleep 1 && echo "one" && sleep 1 && echo "two"
one
two
5.3 變量分配給 sleep
可以將變量分配給sleep命令。
#!/bin/bash
SLEEP_INTERVAL="30"
CURRENT_TIME=$(date +"%T")
echo "Time before sleep: ${CURRENT_TIME}"
echo "Sleeping for ${SLEEP_INTERVAL} seconds"
sleep ${SLEEP_INTERVAL}
CURRENT_TIME=$(date +"%T")
echo "Time after sleep: ${CURRENT_TIME}"
該腳本定義了一個(gè)名為的變量SLEEP_INTERVAL ,其值稍后用作sleep命令的參數(shù)。此示例腳本的輸出顯示執(zhí)行持續(xù)了 30 秒:
$ ./time_script.sh
Time before sleep: 00:01:15
Sleeping for 30 seconds
Time after sleep: 00:01:45
5.4 定義檢查間隔
檢查網(wǎng)站是否在線,如果成功 ping 一個(gè)網(wǎng)站,腳本就會(huì)停止,在不成功的 ping 之間引入 10 秒的延遲。
#!/bin/bash
while :
do
if ping -c 1 www.google.com &> /dev/null
then
echo "Google is online"
break
fi
sleep 10
done
5.5 為操作完成留出時(shí)間
您可能正在運(yùn)行一個(gè) bash 腳本,該腳本在內(nèi)部調(diào)用另外兩個(gè) bash 腳本——一個(gè)在后臺運(yùn)行測試,另一個(gè)打印結(jié)果。如果第二個(gè)腳本在第一個(gè)腳本完成之前執(zhí)行,用于sleep防止第二個(gè)腳本打印錯(cuò)誤的結(jié)果:
while kill -0 $BACK_PID ; do
echo "Waiting for the process to end"
sleep 1
done
該kill -0 $BACK_PID命令檢查第一個(gè)腳本的進(jìn)程是否仍在運(yùn)行。如果是,它會(huì)打印消息并休眠 1 秒鐘,然后再次檢查。
5.6 預(yù)測延遲
用于sleep允許某些命令執(zhí)行的延遲。
for (( i = 1 ; i <= 250 ; i++ ));
do
sleep 1
<do something>
done
參考:
How to Use the Linux sleep Command with Examples
原文鏈接:https://blog.csdn.net/xixihahalelehehe/article/details/127348342
相關(guān)推薦
- 2024-07-18 Spring Security之配置體系
- 2022-04-27 Python學(xué)習(xí)筆記之字典,元組,布爾類型和讀寫文件_python
- 2022-11-09 css實(shí)現(xiàn)div盒子旋轉(zhuǎn)
- 2022-11-23 GoLang?unsafe包詳細(xì)講解_Golang
- 2022-08-29 .NET?Core使用Eureka實(shí)現(xiàn)服務(wù)注冊_實(shí)用技巧
- 2022-07-24 .Net結(jié)構(gòu)型設(shè)計(jì)模式之代理模式(Proxy)_基礎(chǔ)應(yīng)用
- 2022-08-31 C語言數(shù)據(jù)結(jié)構(gòu)之單鏈表與雙鏈表的增刪改查操作實(shí)現(xiàn)_C 語言
- 2023-06-13 python調(diào)試過程中多顏色輸出方式_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支