超时脚本是一个用于限制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
你可以使用--memlimit-rss
或-s
开关监控RSS(常驻集大小)内存限制。
$ ./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/