Linux中國

如何在 Linux 中的特定時間運行命令

有一天,我使用 rsync 將大文件傳輸到區域網上的另一個系統。由於它是非常大的文件,大約需要 20 分鐘才能完成。我不想再等了,我也不想按 CTRL+C 來終止這個過程。我只是想知道在類 Unix 操作系統中是否有簡單的方法可以在特定的時間運行一個命令,並且一旦超時就自動殺死它 —— 因此有了這篇文章。請繼續閱讀。

在 Linux 中在特定時間運行命令

我們可以用兩種方法做到這一點。

方法 1 - 使用 timeout 命令

最常用的方法是使用 timeout 命令。對於那些不知道的人來說,timeout 命令會有效地限制一個進程的絕對執行時間。timeout 命令是 GNU coreutils 包的一部分,因此它預裝在所有 GNU/Linux 系統中。

假設你只想運行一個命令 5 秒鐘,然後殺死它。為此,我們使用:

$ timeout <time-limit-interval> <command>

例如,以下命令將在 10 秒後終止。

$ timeout 10s tail -f /var/log/pacman.log

你也可以不用在秒數後加後綴 s。以下命令與上面的相同。

$ timeout 10 tail -f /var/log/pacman.log

其他可用的後綴有:

  • m 代表分鐘。
  • h 代表小時。
  • d 代表天。

如果你運行這個 tail -f /var/log/pacman.log 命令,它將繼續運行,直到你按 CTRL+C 手動結束它。但是,如果你使用 timeout 命令運行它,它將在給定的時間間隔後自動終止。如果該命令在超時後仍在運行,則可以發送 kill 信號,如下所示。

$ timeout -k 20 10 tail -f /var/log/pacman.log

在這種情況下,如果 tail 命令在 10 秒後仍然運行,timeout 命令將在 20 秒後發送一個 kill 信號並結束。

有關更多詳細信息,請查看手冊頁。

$ man timeout

有時,某個特定程序可能需要很長時間才能完成並最終凍結你的系統。在這種情況下,你可以使用此技巧在特定時間後自動結束該進程。

另外,可以考慮使用 cpulimit,一個簡單的限制進程的 CPU 使用率的程序。有關更多詳細信息,請查看下面的鏈接。

方法 2 - 使用 timelimit 程序

timelimit 使用提供的參數執行給定的命令,並在給定的時間後使用給定的信號終止進程。首先,它會發送警告信號,然後在超時後發送 kill 信號。

timeout 不同,timelimit 有更多選項。你可以傳遞參數數量,如 killsigwarnsigkilltimewarntime 等。它存在於基於 Debian 的系統的默認倉庫中。所以,你可以使用命令來安裝它:

$ sudo apt-get install timelimit

對於基於 Arch 的系統,它在 AUR 中存在。因此,你可以使用任何 AUR 助手進行安裝,例如 PacaurPackerYayYaourt 等。

對於其他發行版,請在這裡下載源碼並手動安裝。安裝 timelimit 後,運行下面的命令執行一段特定的時間,例如 10 秒鐘:

$ timelimit -t10 tail -f /var/log/pacman.log

如果不帶任何參數運行 timelimit,它將使用默認值:warntime=3600 秒、warnsig=15 秒、killtime=120 秒、killsig=9。有關更多詳細信息,請參閱本指南最後給出的手冊頁和項目網站。

$ man timelimit

今天就是這些。我希望對你有用。還有更好的東西。敬請關注!

乾杯!

資源

via: https://www.ostechnix.com/run-command-specific-time-linux/

作者:SK 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...