有時候,咱們在使用 Linux 系統時,會出現下面這樣的情景:linux
咱們有兩種方法來實現這樣的需求。面試
timeout
命令就是爲這樣的需求而定製的,它能夠將命令/程序的運行時間限定在你所指定的時間裏。當時間到達之後,它就會發送一個信號給所運行的命令/程序,使其自動停止。spa
timeout 命令包含在 GNU 的核心軟件包裏,因此它在全部 GNU/Linux 系統裏都是已經預裝好了,無需咱們再重複安裝。操作系統
該命令的使用格式以下:.net
$ timeout <time-limit-interval> <command>
好比,執行下面的命令,程序將運行10秒後自動停止:3d
$ timeout 10s tail -f /var/log/pacman.log
在這條命令裏,10s 就是指定這後面的命令只運行 10 秒。其中 s 表明 seconds ,即秒,不寫的話也能夠,默認單位是秒。除此以外,還有下列單位可用:調試
若是僅僅是運行 tail -f /var/log/pacman.log 這條命令的話,那命令將一直運行,直到你按 ctrl+c 。code
timeout 命令默認是到達指定時間後,發送 SIGKILL 信號。可是,其實你能夠指定它所發送的信號,使用 -k
命令便可。blog
$ timeout -k 20 10 tail -f /var/log/pacman.log
在以上命令, 10 秒以後將發送代號爲 20 的信號,即 SIGTSTP 命令。全部支持的信號可以使用如下命令查詢:get
$ kill -l
timeout 命令在進行硬件調試時特別有用。好比,下面這條命令將顯示 10 秒內核信息:
$ timeout 10 dmesg -w
須要瞭解更多信息,可使用 man timeout
命令來查看。
2020 精選 阿里/騰訊等一線大廠 面試、簡歷、進階、電子書 公衆號「 良許Linux」後臺回覆「 資料」免費獲取
#### 方法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
命令來查看。