自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在 Linux 中使用 timeout 命令為正在運(yùn)行的命令設(shè)置計(jì)時(shí)器

系統(tǒng) Linux
今天我們分享一下如何使用 timeout 命令。

使用 timeout 命令,可以為運(yùn)行的程序或命令設(shè)置超時(shí)時(shí)間,當(dāng)程序或命令運(yùn)行的時(shí)間超過設(shè)置值時(shí),就會被 timeout 強(qiáng)行終止。

今天我們分享一下如何使用 timeout 命令。

如何使用 timeout 命令

timeout 命令的使用語法如下所示:

timeout [options] seconds command

在上述語法描述中,時(shí)間的單位為秒(second)。

我們以 sleep 命令為例。sleep 命令會讓系統(tǒng)休眠指定的時(shí)間,比如 sleep 10,系統(tǒng)會休眠 10 秒鐘(即當(dāng)前 shell 會等待 10 秒鐘)。但是如果我使用了 timeout 命令,如下所示:

timeout 4 sleep 10

上述命令中,sleep 命令指定的 10 秒鐘,即原計(jì)劃讓 shell 等待 10 秒鐘,但是前面添加了 timeout 命令,設(shè)置超時(shí)時(shí)間為 4 秒鐘,所以最終結(jié)果是在 4 秒鐘后 sleep 命令被終止,shell 被重新喚醒。

默認(rèn)情況下,timeout 命令會發(fā)送 SIGTERM 信號柔和的終止正在運(yùn)行的程序。但是我們可以使用 -s 選項(xiàng)來使用其他信號。

大家可以使用 kill -l 命令來查看 Linux 中的 kill 信號。假如我們想要發(fā)送 SIGKILL 信號(kill -9),而不是默認(rèn)的 SIGTERM,可參考如下命令:

timeout -s SIGKILL 3 sleep 30

此外,我們也可以使用 KILL 或 9(kill -l 中列出的 SIGKILL 的數(shù)字)來代替 SIGKILL。

強(qiáng)制殺掉進(jìn)程有可能會造成數(shù)據(jù)丟失,不過程序確實(shí)可以忽略 SIGTERM。

另外一種更好的處理方式是,假如你發(fā)送的終止請求被正在運(yùn)行的(想要終止的)程序給忽略了,那么這時(shí)候可以發(fā)送強(qiáng)制終止信號。

我們來看這樣一個(gè)例子:假設(shè)我們想運(yùn)行一個(gè)時(shí)間不超過 5 秒的程序,但是當(dāng)程序運(yùn)行以后(因某種原因)無法終止,那么我們可以在發(fā)送默認(rèn)的 SIGTERM 信號 3 秒鐘后再發(fā)送一個(gè)強(qiáng)制終止的信號。如下命令所示:

timeout -k 3 5 program

這也就意味著,我們所運(yùn)行的那個(gè)程序,運(yùn)行時(shí)間不會超過 8 秒鐘??梢允褂?time 命令來檢查程序?qū)嶋H的運(yùn)行時(shí)間。

那么,timeout 命令的實(shí)際應(yīng)用場景是什么呢?

timeout 命令看起來跟其他一些不怎么常用的命令一樣,使用的時(shí)候比較少。然而,在某些特殊情況下,它還是很有用的。

比如在進(jìn)行網(wǎng)絡(luò)操作的時(shí)候可以使用 timeout 來設(shè)置超時(shí)時(shí)間,或者當(dāng)你在玩一個(gè)終端游戲的時(shí)候,為了防止沉迷于游戲(玩的時(shí)間過長),也可以使用 timeout 命令來讓游戲程序在某個(gè)時(shí)間后強(qiáng)行終止運(yùn)行。

責(zé)任編輯:龐桂玉 來源: TIAP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號