超時腳本是一個有用的資源監控程式,用於限制 Linux 中進程的時間和內存消耗。它允許您在控制下運行程序,強制執行時間和內存限制,違反這些參數時終止程序。
無需安裝,只需使用timeout程式執行一個命令及其參數,它將監控命令的內存和時間消耗,如果超出限制,將中斷該進程並通知您預定的消息。
要運行此腳本,您必須在 Linux 系統上安裝Perl 5,並掛載/proc 文件系統。
要檢查 Linux 系統上安裝的Perl版本,運行以下命令。
$ perl -v

接下來,使用git 命令將timeout存儲庫克隆到您的系統,然後使用cd 命令進入本地存儲庫並將其作為常規 Linux 命令調用。
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
現在讓我們看看timeout腳本的工作原理。
基本記憶體限制(100M虛擬記憶體):
第一個例子展示了如何將一個進程的記憶體使用限制在100M虛擬記憶體,使用-m
標誌。記憶體的默認單位是千字節。
在這裡,stress-ng命令運行了4個虛擬記憶體壓力器(VMS),它們結合起來使用40%的可用記憶體,持續10分鐘。因此,每個壓力器使用10%的可用記憶體。
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

考慮到上面timeout命令的輸出,stress-ng工作進程在僅僅1.16秒後就被終止了。這是因為VMS的總記憶體消耗(438660千字節)超過了允許stress-ng及其子進程使用的虛擬記憶體。
基本進程時間限制:
要啟用進程時間限制,請使用-t
標誌,如下所示。
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

在上面的例子中,當stress-ng的CPU+SYS時間超過定義的值4時,工作進程被殺死。
同時限制進程的時間和記憶體:
您也可以同時限制記憶體和時間,如下所示。
$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Timeout還支持一些高級選項,例如--detect-hangups
,它可以啟用掛斷檢測。
$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
您可以使用RSS(常驻集大小)内存限制来监控,使用--memlimit-rss
或-s
开关。
$ ./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
此外,要返回进程的退出代码或信号+128,请使用--confess
或-c
选项,如下所示。
$ ./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
有关更多信息和使用示例,请参阅timeout Github存储库:https://github.com/pshved/timeout。
您可能还会发现以下相关文章同样有用:
timeout脚本是一个简单的资源监控程序,主要限制Linux中进程的时间和内存消耗。您可以通过下面的评论表单向我们提供有关timeout脚本的反馈。
Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/