我命由我不由天!如何只讓程式執行指定時間?
有時候,我們在使用 Linux 系統時,會出現下面這樣的情景:
-
一個命令或程式需要很長時間才能執行完畢,在這過程中,系統可能會假死,我們做任何操作都沒用,只好重啟系統;
-
我們僅僅想讓命令或程式執行指定的時間,到了時間點就讓命令/程式中止;
-
Log 重新整理很快,但我們只需要 10 秒鐘的 log。
我們有兩種方法來實現這樣的需求。
方法1:使用 timeout 命令
timeout
命令就是為這樣的需求而定製的,它可以將命令/程式的執行時間限定在你所指定的時間裡。當時間到達以後,它就會傳送一個訊號給所執行的命令/程式,使其自動中止。
timeout 命令包含在 GNU 的核心軟體包裡,所以它在所有 GNU/Linux 系統裡都是已經預裝好了,無需我們再重複安裝。
該命令的使用格式如下:
$ timeout <time-limit-interval> <command>
比如,執行下面的命令,程式將執行10秒後自動中止:
$ timeout 10s tail -f /var/log/pacman.log
在這條命令裡,10s 就是指定這後面的命令只執行 10 秒。其中 s 代表 seconds ,即秒,不寫的話也可以,預設單位是秒。除此之外,還有下列單位可用:
- m - 分鐘
- h - 小時
- d - 天
如果僅僅是執行 tail -f /var/log/pacman.log 這條命令的話,那命令將一直執行,直到你按 ctrl+c 。
timeout 命令預設是到達指定時間後,傳送 SIGKILL 訊號。但是,其實你可以指定它所傳送的訊號,使用 -k
命令即可。
$ timeout -k 20 10 tail -f /var/log/pacman.log
在以上命令, 10 秒之後將傳送代號為 20 的訊號,即 SIGTSTP 命令。所有支援的訊號可使用以下命令查詢:
$ kill -l
timeout 命令在進行硬體除錯時特別有用。比如,下面這條命令將顯示 10 秒核心資訊:
$ timeout 10 dmesg -w
需要了解更多資訊,可以使用 man timeout
命令來檢視。
方法2:使用 timelimit 命令
timelimit
功能與 timeout 命令類似,但它有更多選項。你不僅可以指定時間終止後所傳送的訊號,也可以指定訊號傳送次數。所以,timelimit 命令更靈活。
除此之外,它會先傳送警告訊號,然後在超時後傳送你所指定的訊號。
timelimit 命令沒有預先安裝,對於 Debian 系統的系統,你可以使用以下命令安裝:
$ sudo apt-get install timelimit
其它作業系統可以使用所對應的安裝方式,或者使用原始碼安裝。
安裝成功之後,上述例程用 timelimit 命令來實現的話,是這樣操作:
$ timelimit -t10 tail -f /var/log/pacman.log
如果你在執行時不帶任何引數,那麼它的預設值如下:
warntime=3600 seconds, warnsig=15, killtime=120, killsig=9
需要了解更多資訊,可以使用 man timelimit
命令來檢視。
看完的都是真愛,點個贊再走唄?您的「三連」就是良許持續創作的最大動力!
- 關注原創慕課手記「良許Linux」,第一時間獲取最新Linux乾貨!
- 私信我回復【資料】【面試】【簡歷】獲取精選一線大廠面試、自我提升、簡歷等資料。
- 關注我的部落格:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2825161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 指定執行緒延遲時間(毫秒)執行緒
- 如何測量程式碼執行時間
- Mybatis實現指定時間db只讀方案MyBatis
- 使用互斥物件讓程式只執行一次 (轉)物件
- 讓頁面在指定時間之後跳轉程式碼
- 如何使用cron任務每隔2天在固定時間執行任務
- 讓我們重視程式執行效率 (轉)
- Springboot啟動時執行指定程式碼Spring Boot
- 程式執行時間的測量
- Linux 檢視程式啟動時間、執行時間Linux
- 計算php程式執行時間的程式PHP
- Java如何測量方法執行時間Java
- 掌控時間管理,讓團隊執行能力更高效
- Stopwatch 計算程式執行時間
- JavaScript 檢測程式碼執行時間JavaScript
- 測量程式的執行時間(二)
- 測量程式的執行時間(一)
- .NET程式碼樹執行時間計時器
- javascript如何測試一段程式碼的執行時間JavaScript
- PAT-B 1026 程式執行時間【時間】
- abap執行時間
- DM7使用dmrestore執行指定時間點或LSN還原REST
- javascript 事件觸發以後函式指定時間後再執行JavaScript事件函式
- 如何測試Linux命令執行時間?Linux
- 解密!如何讓別人不由自主的答應你的要求解密
- 讓 Markdown 中的程式碼可以實時執行
- 分享自己做的一個指定程式以及執行緒長時間cpu監控的工具執行緒
- python程式計算執行時間差Python
- VC程式執行時間測試函式C程式函式
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- 後臺執行以及保持程式在後臺長時間執行
- 只允許一個程式執行winformORM
- 如何用GNU time查詢Linux命令或程式的執行時間Linux
- 如何計算一段js程式碼執行耗費的時間JS
- js如何計算一段程式碼的執行花費時間JS
- 如何讓sublime編輯器執行python程式?Python
- JavaScript 計算程式碼執行花費時間JavaScript
- 1026. 程式執行時間(15)