time 與 timeout 的簡(jiǎn)要故事
在Linux終端中工作時(shí),經(jīng)常會(huì)遇到需要監(jiān)視命令的執(zhí)行時(shí)間或限制其運(yùn)行時(shí)間的情況。time
和timeout
命令是能夠幫助你完成這些任務(wù)的強(qiáng)大工具。在本教程中,我們將探討如何有效使用這兩個(gè)命令,并附帶實(shí)際示例。
使用`time`命令
在Linux中,time
命令用于測(cè)量指定命令或進(jìn)程的執(zhí)行時(shí)間。它提供有關(guān)命令使用的實(shí)際、用戶和系統(tǒng)時(shí)間的信息。實(shí)際時(shí)間表示實(shí)際經(jīng)過(guò)的時(shí)間,而用戶時(shí)間表示命令消耗的CPU時(shí)間,系統(tǒng)時(shí)間指示系統(tǒng)代表命令執(zhí)行所花費(fèi)的時(shí)間。
語(yǔ)法
time?[選項(xiàng)]?命令
示例
假設(shè)你想要測(cè)量執(zhí)行ls
命令所需的時(shí)間:
time?ls
輸出將提供如下信息:
real????0m0.005s
user????0m0.001s
sys?????0m0.003s
在這個(gè)例子中,real
時(shí)間是命令執(zhí)行所需的實(shí)際時(shí)間,而user
和sys
時(shí)間分別表示在用戶和系統(tǒng)模式下CPU所花費(fèi)的時(shí)間。
使用`timeout`命令
timeout
命令允許你以指定的時(shí)間限制運(yùn)行命令。如果命令在指定時(shí)間內(nèi)未完成,timeout
將終止它。在處理可能掛起或無(wú)限運(yùn)行的命令時(shí),這可能特別有用。
語(yǔ)法
timeout?[選項(xiàng)]?時(shí)限?命令
示例
假設(shè)你想要將潛在消耗時(shí)間的命令(比如備份腳本)的執(zhí)行限制在1分鐘內(nèi):
timeout?1m?./backup_script.sh
如果backup_script.sh
在1分鐘內(nèi)完成,該命令將會(huì)自然結(jié)束。然而,如果超過(guò)了時(shí)間限制,timeout
將終止它。
默認(rèn)情況下,當(dāng)達(dá)到時(shí)間限制時(shí),timeout
會(huì)發(fā)送SIGTERM信號(hào)給命令。你也可以使用-s
(--signal
)選項(xiàng)來(lái)指定要發(fā)送的信號(hào)。
結(jié)合`time`和`timeout`
你也可以結(jié)合time
和timeout
命令,以在時(shí)間受限的環(huán)境中測(cè)量命令的執(zhí)行時(shí)間。
timeout?10s?time?./long_running_command.sh
在這個(gè)例子中,timeout
命令確保time
命令(用于測(cè)量執(zhí)行時(shí)間)不會(huì)無(wú)限期運(yùn)行。執(zhí)行將在10秒后終止,并且time
輸出將提供在那段時(shí)間內(nèi)使用的資源的信息。
結(jié)論
time
和timeout
命令是在Linux中管理命令執(zhí)行時(shí)間的有價(jià)值的工具。time
命令幫助你了解命令的資源利用情況,而timeout
命令允你控制命令的執(zhí)行時(shí)間,以防止它們無(wú)限期運(yùn)行。通過(guò)掌握這些命令,你可以更好地管理終端任務(wù),提高作為L(zhǎng)inux用戶的整體效率。
Nawaz是一位Linux命令行愛(ài)好者,喜歡分享與命令行和Shell腳本相關(guān)的提示和教程。你可以通過(guò)LinkedIn與他聯(lián)系。