linuxsleep能不能線程延時

這篇文章主要介紹“l(fā)inux sleep能不能線程延時”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“l(fā)inux sleep能不能線程延時”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)建站主營三穗網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),三穗h5微信小程序開發(fā)搭建,三穗網(wǎng)站營銷推廣歡迎三穗等地區(qū)企業(yè)咨詢

sleep能延時。linux sleep命令可以用來將目前動作延遲一段時間,語法“sleep [--help] [--version] number[smhd]”;默認(rèn)情況下,sleep命令會延遲幾秒鐘,但允許使用后綴指定時間單位來指定延遲的秒數(shù)、分鐘、小時或天數(shù)。

Linux sleep命令介紹

Linux sleep命令可以用來將目前動作延遲一段時間。

使用權(quán)限:所有使用者。

語法

sleep [--help] [--version] number[smhd]

參數(shù)說明:

  • --help : 顯示輔助訊息

  • --version : 顯示版本編號

  • number : 時間長度,后面可接 s、m、h 或 d

    其中 s 為秒,m 為 分鐘,h 為小時,d 為日數(shù)

1、延遲Linux命令執(zhí)行

默認(rèn)情況下,sleep命令會等待幾秒鐘。為了理解這一點,讓我們在使用sleep命令前和后輸出當(dāng)前時間。例如,以下命令在打印當(dāng)前時間后等待5秒再次打印時間:

$ date '+%r'; sleep 5; date '+%r'

在此示例中,需要使用分號(;)分隔每個命令。

linux sleep能不能線程延時

2、發(fā)出等待N分鐘的命令

一般情況下,sleep命令允許我們使用后綴指定時間單位,這個可以在sleep命令中使用以下后綴表示:

  • s– 以秒為單位指定時間單位。

  • m– 以分鐘為單位指定時間單位。

  • h– 以小時為單位指定時間單位。

  • d– 以天為單位指定時間單位。

所以,這里將使用'm'后綴休眠1分鐘:

$ date '+%r'; sleep 1m; date '+%r'

3、讓命令休眠X分秒

其實還可以在sleep命令中使用多個后綴。在這種情況下,持續(xù)時間是通過將所有值相加來計算的。

為了理解這一點,下面將使用命令休眠1分20秒,命令如下:

$ date '+%r'; sleep 1m 20s; date '+%r'

在上面的示例中,使用了兩個不同的后綴。但是,也可以使用相同的后綴。比如可以用2s和3s后綴來休眠5秒,命令如下:

$ date '+%r'; sleep 2s 3s; date '+%r'

4、通過sleep命令使用浮點數(shù)

此外,sleep命令還接受一個浮點數(shù)作為輸入,這樣可以使用這種方法睡眠不到一秒鐘。例如,可以使用0.5s值休眠半秒:

$ date '+%r'; sleep 0.5s; date '+%r'

在上面的輸出中,可以看到date命令為秒時間單位顯示了相同的值。

除此之外,還可以使用帶有其它后綴的浮點值。例如,可以使用0.5m值休眠30秒:

$ date '+%r'; sleep 0.5m; date '+%r'

5、使用sleep命令模擬鬧鐘

在前面的幾個例子中,主要介紹了如何使用sleep命令來延遲下一個命令的執(zhí)行。另外,還可以使用這個技巧來模擬鬧鐘。

因此,接下來使用以下命令在5秒后設(shè)置警報:

$ sleep 5; cvlc alarm.mp3

上述命令在等待5秒后使用VLC媒體播放器打開alarm.mp3文件。就像任何其它Linux命令一樣,可以使用ctrl+c組合鍵來停止VLC媒體播放器。

sleep命令的使用實例

先讓程序睡上 30 秒

從字面意思看,想必你已經(jīng)猜出來 sleep 命令的作用啦。簡單地說,sleep 就是讓程序稍稍休息一下,然后,再繼續(xù)工作(休息是為了更好地工作……)。

我們讓 Shell 程序小憩 30 秒:

#睡眠30秒
[roc@roclinux ~]$ sleep 30s
 
#讓date命令來監(jiān)督, 看看是不是真的睡了30秒
[roc@roclinux ~]$ date;sleep 30s; date
Thu Feb 25 08:25:17 CST 2016
Thu Feb 25 08:25:47 CST 2016

睡眠時間個性化

sleep 命令雖然簡單,但我們可以對它進(jìn)行個性化定制,讓它變得更好玩一些。

一般來說,sleep 命令后面跟的數(shù)值是用來表示時間的,是時間就要有單位,如果我們不指定單位的話,它默認(rèn)的單位是什么呢?

[roc@roclinux ~]$ date; sleep 1; date
Thu Feb 25 09:55:47 CST 2016
Thu Feb 25 09:55:48 CST 2016

從這個示例來看,默認(rèn)的單位就是秒啦,和指定單位 s 有同等的效果。

有秒的話,還應(yīng)該有分鐘和小時才對,那這些單位在 sleep 中如何表示呢?

  • s:表示秒

  • m:表示分鐘

  • h:表示小時

  • d:表示天

比如,如果想讓 Shell 程序睡眠 1 分鐘,應(yīng)該如何操作呢?

[roc@roclinux ~]$ date; sleep 1m; date
Thu Feb 25 10:00:43 CST 2016
Thu Feb 25 10:01:43 CST 2016

那如果想讓 shell 程序睡眠 1 小時的話,直接把單位換成 h 就可以了。如果我們想讓 shell 程序睡眠 1 分 40 秒,又該怎么操作呢?1 分=60 秒,1 分 40 秒=100 秒,可以直接讓計算機睡眠 100 秒。

[roc@roclinux ~]$ date; sleep 100; date
Thu Feb 25 10:12:28 CST 2016
Thu Feb 25 10:14:08 CST 2016

其實呢,sleep 比你想象得還要體貼,你可以直接這樣輸入:

#注意: 分鐘和秒之間一定要有空格哦
[roc@roclinux ~]$ date; sleep 1m 40s; date
Thu Feb 25 10:17:04 CST 2016
Thu Feb 25 10:18:44 CST 2016

這種方法簡單、直接,節(jié)省了我們不少的思考時間。

在 sleep 中最大的單位是 d(天),如果想表示更長的時間,比如周、月、年的話,那么你只能把它們轉(zhuǎn)換成天來表示了。

# 這樣,  Shell程序乖乖地沉睡 "一周2小時5分4秒"
[roc@roclinux ~]$ date; sleep 7d 2h 5m 4s; date
Thu Feb 25 10:17:04 CST 2016
Thu Feb 25 10:18:44 CST 2016

毫秒級睡眠時間可不可以

sleep 命令的默認(rèn)時間單位是秒,但對于高速運行的程序來說,“秒”還是顯得太長了。那 sleep 能不能實現(xiàn)毫秒級的睡眠呢?答案是可以的,例如,我們讓 Shell 程序睡眠 3 毫秒:

[roc@roclinux ~]$ time sleep 0.003
 
real    0m0.004s
user    0m0.000s
sys 0m0.001s

time 可以通過浮點數(shù)的方式實現(xiàn)毫秒級的睡眠,但這里有一點需要注意,即睡眠時間的精度。sleep 命令只能保證 10ms 級別的精度控制,對于小于 10ms 的睡眠時間是存在誤差的。實際應(yīng)用中,如果你對時間精度要求特別高的話,sleep 或許不是一個正確的選擇,還是請考慮其他方法吧。

sleep 的過程中 CPU 是否被占用

默認(rèn)情況下,sleep 的進(jìn)程是不占用 CPU 時間的,我們可以通過實驗來說明這個問題:

[roc@roclinux ~]$ \time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2560maxresident)k
0inputs+0outputs (0major+200minor)pagefaults 0swaps

看到了嗎?0.00user、0.00system、0%CPU 這三個輸出項都表明 sleep 是不會耗費 CPU 的計算資源的。

注意:上面使用了\time命令,它指代的是 /usr/bin/time,而不是 Shell 內(nèi)置的 time 命令。/usr/bin/time 命令可以顯示更多的信息,而 Shell 內(nèi)置的命令做不到這一點。

關(guān)于“l(fā)inux sleep能不能線程延時”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

名稱欄目:linuxsleep能不能線程延時
鏈接分享:http://bm7419.com/article18/gihhgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)頁設(shè)計公司、網(wǎng)站導(dǎo)航、軟件開發(fā)、網(wǎng)站收錄、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司