超时脚本是一个有用的资源监控程序,用于限制 Linux 中进程的时间和内存消耗。它允许您在控制下运行程序,并强制执行时间和内存限制,并在违反这些参数时终止程序。
无需安装,只需使用超时程序执行命令及其参数,它将监视命令的内存和时间消耗,如果超出限制则中断进程,并用预定义的消息通知您。
要运行此脚本,您必须在 Linux 系统上安装Perl 5并安装 /proc 文件系统。
要检查 Linux 系统上安装的Perl版本,请运行以下命令。
$ perl -v
![](https://www.alaica.com/wp-content/uploads/linux-563.png)
接下来,使用git 命令将超时存储库克隆到您的系统,然后使用cd 命令移至本地存储库并像通常的 Linux 命令一样调用它。
$ cd ~/bin $ git 克隆 https://github.com/pshved/timeout.git $ CD 超时
现在让我们看看超时脚本是如何工作的。
基本内存限制(100M虚拟内存):
第一个示例展示了如何使用 标志将进程的内存使用量限制为100M虚拟内存-m
。内存的默认单位是千字节。
此处,stress-ng 命令运行 4 个虚拟内存压力源 (VMS),它们组合起来使用40%的可用内存达 10 分钟。因此,每个压力源使用10%的可用内存。
$ ./timeout -m 100000 压力-ng --vm 4 --vm-bytes 40% -t 10m
![](https://www.alaica.com/wp-content/uploads/linux-564.png)
考虑到上面超时命令的输出,stress-ng工作进程仅在1.16秒后就终止了。这是因为VMS的总内存消耗(438660 KB)大于stress-ng及其子进程允许的虚拟内存使用量。
流程的基本时间限制:
要启用进程的时间限制,请使用-t
如图所示的标志。
$ ./timeout -t 4 压力-ng --vm 4 --vm-bytes 40% -t 10m
![](https://www.alaica.com/wp-content/uploads/linux-565.png)
在上面的示例中,当stress-ng CPU+SYS时间超过定义的值4时,工作进程将被终止。
限制进程的时间和内存
您还可以限制内存和时间按如下方式同时
$ ./timeout -t 4 -m 100000 压力-ng --vm 4 --vm-bytes 40% -t 10m
Timeout 还支持一些高级选项,例如--detect-hangups
,它可以启用挂断检测。
$ ./timeout --Detect-hangups -m 100000 压力-ng --vm 4 --vm-bytes 40% -t 10m
您可以使用或开关监视RSS(驻留集大小)内存限制。--memlimit-rss
-s
$ ./timeout -m 100000 -s 压力-ng --vm 4 --vm-bytes 40% -t 10m
此外,要返回进程的退出代码或 signal+128,请使用--confess
或-c
选项,如下所示。
$ ./timeout -m 100000 -c 压力-ng --vm 4 --vm-bytes 40% -t 10m
有关更多信息和使用示例,请参阅超时Github 存储库: https: //github.com/pshved/timeout。
您可能还会发现以下相关文章同样有用:
- 如何在批处理模式下使用“top”按内存使用情况查找前 15 个进程
- CPUTool – 限制和控制 Linux 中任何进程的 CPU 使用率
- 如何使用 CPULimit 工具限制 Linux 中进程的 CPU 使用率
超时脚本是一个简单的资源监控程序,本质上限制了Linux中进程的时间和内存消耗。您可以通过下面的评论表向我们提供有关超时脚本的反馈。