对于负责控制 Linux 服务器的系统管理员来说,资源管理是一项重要的工作。 有时,Linux 命令会占用大量系统资源,需要停止。
幸运的是,您可以使用以下实用程序来限制命令的运行时间 时限. 在本文中,我们将讨论为什么要为命令添加时间限制,以及如何使用 timelimit 和 timeout 等命令添加时间限制。
为什么要限制命令的运行时间?
有几个原因可能导致您必须在时间限制内运行命令。 首先,您可能正在运行一台较旧的计算机或服务器,并且不希望您的系统将其资源浪费在不需要的处理上。
其次,文件传输等有时间限制的任务在一段时间后完成,但它们的进程不会立即停止。 要限制程序占用额外的 CPU 时间和内存,您可以添加一个限制,以便在传输完成后停止进程。
使用 timeout 命令添加限制
timeout 命令是许多 Linux 用户为其命令添加时间限制的首选。 由于该工具是 GNU 核心实用程序 包,它几乎预装在每个 Linux 发行版上。
timeout 命令的基本语法是:
timeout limit command
…在哪里 限制 是命令应该运行的时间量,并且 命令 是您要在时间限制内执行的 Linux 命令。
为了 example如果您想使用 最佳 命令 10 秒:
timeout 10s top
顶部命令是永无止境的,您必须使用手动退出它 Ctrl + C. 上述命令将运行 top 10 秒,一旦计时器到时,超时将停止执行。 请注意,超时需要 秒 作为默认时间单位,这意味着 10 和 10s 是相同的。
你也可以使用 米, 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 这样的实用程序是救命稻草,因为它们允许您为命令添加时间限制。
与命令运行时一样,您也可以限制系统的屏幕时间。 如果您是一位不希望您的孩子在电脑前浪费不必要时间的父母,那么限制屏幕时间是最合适的选择。