久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux sleep能不能線程延時(shí)

共計(jì) 3297 個(gè)字符,預(yù)計(jì)需要花費(fèi) 9 分鐘才能閱讀完成。

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

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

Linux sleep 命令介紹

Linux sleep 命令可以用來(lái)將目前動(dòng)作延遲一段時(shí)間。

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

語(yǔ)法

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

參數(shù)說(shuō)明:

–help : 顯示輔助訊息

–version : 顯示版本編號(hào)

number : 時(shí)間長(zhǎng)度,后面可接 s、m、h 或 d

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

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

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

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

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

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

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

s– 以秒為單位指定時(shí)間單位。

m– 以分鐘為單位指定時(shí)間單位。

h– 以小時(shí)為單位指定時(shí)間單位。

d– 以天為單位指定時(shí)間單位。

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

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

3、讓命令休眠 X 分秒

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

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

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

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

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

4、通過(guò) sleep 命令使用浮點(diǎn)數(shù)

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

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

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

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

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

5、使用 sleep 命令模擬鬧鐘

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

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

$ sleep 5; cvlc alarm.mp3

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

sleep 命令的使用實(shí)例

先讓程序睡上 30 秒

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

我們讓 Shell 程序小憩 30 秒:

# 睡眠 30 秒
[roc@roclinux ~]$ sleep 30s
 
#讓 date 命令來(lái)監(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

睡眠時(shí)間個(gè)性化

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

一般來(lái)說(shuō),sleep 命令后面跟的數(shù)值是用來(lái)表示時(shí)間的,是時(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

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

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

s:表示秒

m:表示分鐘

h:表示小時(shí)

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 小時(shí)的話,直接把單位換成 h 就可以了。如果我們想讓 shell 程序睡眠 1 分 40 秒,又該怎么操作呢?1 分 =60 秒,1 分 40 秒 =100 秒,可以直接讓計(jì)算機(jī)睡眠 100 秒。

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

其實(shí)呢,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ǎn)單、直接,節(jié)省了我們不少的思考時(shí)間。

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

#  這樣, Shell 程序乖乖地沉睡   一周 2 小時(shí) 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

毫秒級(jí)睡眠時(shí)間可不可以

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

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

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

sleep 的過(guò)程中 CPU 是否被占用

默認(rèn)情況下,sleep 的進(jìn)程是不占用 CPU 時(shí)間的,我們可以通過(guò)實(shí)驗(yàn)來(lái)說(shuō)明這個(gè)問(wèn)題:

[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 這三個(gè)輸出項(xiàng)都表明 sleep 是不會(huì)耗費(fèi) CPU 的計(jì)算資源的。

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

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

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-12發(fā)表,共計(jì)3297字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 铜陵市| 松潘县| 沽源县| 隆德县| 泽州县| 泰来县| 泊头市| 灵寿县| 马山县| 宣恩县| 耿马| 东莞市| 武川县| 乐安县| 巍山| 云霄县| 察隅县| 青冈县| 仁化县| 湟源县| 北京市| 屏南县| 青岛市| 湘乡市| 光泽县| 广丰县| 扬中市| 永泰县| 调兵山市| 郓城县| 新昌县| 泰州市| 和静县| 曲水县| 彭州市| 浦城县| 资阳市| 定远县| 柏乡县| 襄城县| 津南区|