如何设置 Linux 命令的时间限制

对于负责控制 Linux 服务器的系统管理员来说,资源管理是一项重要的工作。 有时,Linux 命令会占用大量系统资源,需要停止。

幸运的是,您可以使用以下实用程序来限制命令的运行时间 时限. 在本文中,我们将讨论为什么要为命令添加时间限制,以及如何使用 timelimit 和 timeout 等命令添加时间限制。

为什么要限制命令的运行时间?

有几个原因可能导致您必须在时间限制内运行命令。 首先,您可能正在运行一台较旧的计算机或服务器,并且不希望您的系统将其资源浪费在不需要的处理上。

其次,文件传输等有时间限制的任务在一段时间后完成,但它们的进程不会立即停止。 要限制程序占用额外的 CPU 时间和内存,您可以添加一个限制,以便在传输完成后停止进程。

使用 timeout 命令添加限制

timeout 命令是许多 Linux 用户为其命令添加时间限制的首选。 由于该工具是 GNU 核心实用程序 包,它几乎预装在每个 Linux 发行版上。

timeout 命令的基本语法是:

timeout limit command

…在哪里 限制 是命令应该运行的时间量,并且 命令 是您要在时间限制内执行的 Linux 命令。

为了 example如果您想使用 最佳 命令 10 秒:

timeout 10s top

顶部命令是永无止境的,您必须使用手动退出它 Ctrl + C. 上述命令将运行 top 10 秒,一旦计时器到时,超时将停止执行。 请注意,超时需要 作为默认时间单位,这意味着 1010s 是相同的。

你也可以使用 , H, 和 d 为了 分钟, 小时, 和 分别。

手动发送终止信号超时

默认情况下, timeout 命令发送 SIGTERM 作为终止信号。 SIGTERM 代表 Signal 终止, 立即终止该过程。

您也可以使用 -s 旗帜。 为了 example发送 SIGKILL 信号:

timeout -s SIGKILL 10 top

也可以使用信号编号指定信号。 以下命令也将 SIGKILL 信号发送到 top 命令。

timeout -s 9 10 top

…在哪里 9 是 SIGKILL 的信号编号。

要获取所有可用信号的列表:

kill -l

即使添加了时间限制,某些命令也不会完全停止。 在这种情况下,使用默认超时命令添加终止信号可以解决问题。

timeout -k 15 10 top

上述命令会先运行top命令10秒,如果命令没有停止,15秒后会向进程发送kill信号。

使用时间限制限制命令运行时间

与 timeout 命令不同,timelimit 不是 Linux 发行版上预装的标准软件包之一。 因此,您必须在系统上手动安装 timelimit。

在基于 Debian 的发行版上安装:

sudo apt install timelimit

时间限制在官方 Arch 存储库中不可用。 但是,您可以使用 AUR 包管理器安装它,例如 .

sudo yay -S timelimit

安装在 Fedora:

sudo dnf install timelimit

在 RHEL 和 CentOS 上:

sudo yum install timelimit

或者,如果您仍然无法在系统上安装该软件包,请从官方网站下载源代码并手动安装。

下载时限

使用 timelimit 运行 top 命令 10 秒:

timelimit -t10 top

Timelimit 接受多个参数,例如 警告时间, 警告信号, 打发时间, 和 杀戮. 如果用户不提供这些参数,则采用它们的默认值,即 警告时间=3600 秒, 警告信号=15, 杀死时间=120, 和 杀死信号=9.

在 Linux 中管理命令的生命周期

如果您的 Linux 机器资源有限,那么监控命令和控制进程就变得很重要。 像 timeout 和 timelimit 这样的实用程序是救命稻草,因为它们允许您为命令添加时间限制。

与命令运行时一样,您也可以限制系统的屏幕时间。 如果您是一位不希望您的孩子在电脑前浪费不必要时间的父母,那么限制屏幕时间是最合适的选择。