有時候,我們在使用 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干貨!
- 公眾號后臺回復【資料】【面試】【簡歷】獲取精選一線大廠面試、自我提升、簡歷等資料,
- 關注我的博客:lxlinux.net
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/115516.html
標籤:Linux
