在 Linux 中运行有时间限制的命令
在 Linux 中,有些命令需要很长时间才能运行,我们会等待完整的命令,但对于某些命令,我们会在一段时间后使用 kill 命令终止该命令。如果我们在一段时间后自动终止长时间运行的命令会怎样。是的,我们可以在 Linux 中做到。有两种方法可以限制命令的时间,一种是 timeout命令和另一个正在使用timelimit程序。
超时命令
Linux 有一个超时命令行实用程序,通过使用该实用程序,如果在时间限制内未完成,我们可以终止该命令。 现在让我们看看 timeout 命令的语法
timeout [OPTION] DURATION COMMAND [ARG]...
这里在持续时间的地方提到时间秒或分钟或小时,使用数字后跟:
- 秒
- m 分钟
- h 小时
如果您没有在数字后提及上面的任何字符,则超时将被视为一秒。之后,提到我们必须限制时间的命令。
现在让我们举一个例子,我们将用 5s ping 命令:
timout 5s ping google.com
然后您可以看到该命令在 5 秒后终止。
如果我们不提及 5 之后的 s,则该命令将像以前一样运行。
我们还可以使用单个选项 -s 或 –signal 将单个设置为在终止进程后发送。这是例子
timeout --signal=SIGQUIT 8 tail -f /var/log/pacman.log
有些命令可能会在发送初始信号后继续执行,我们可以使用 -k 或 –kill 选项随着时间的推移处理此类命令。以下是语法
-k --kill-after=DURATION
要了解有关 timeout 命令的更多信息,请使用 man 命令:
man timeout
时限计划
timelimit 是一个实用程序,它在给定的时间限制内执行给定的命令。如果提到的命令在提到的时间之前终止,则 timelimit 静默退出。在杀死命令之前,timelimit 向命令发送警告,然后发送终止信号。timelimit 提供了比 timeout 命令更多的选项,非常有用。
限时安装:
对于像 Ubuntu 这样的基于 Debian 的系统,使用以下命令:
sudo apt install timelimit
对于 arch Linux 或基于 arch 的操作系统,请使用 AUR 进行安装。使用以下命令:
git clone https://aur.archlinux.org/timelimit.git && cd timelimit && makepkg -sri
使用时限
使用 timelimit 的基本语法如下:
timelimit [-pq] [-S killsig] [-s warnsig] [-T killtime] [-t warntime] command [arguments …]
timelimit 选项的默认值如下:
- 警告时间(-t):3600
- 警告(-s):15
- 杀戮时间(-T):120
- 杀戮信号(-S):9
下面是 timelimit 命令的一个示例:
要了解有关 timelimit 命令的更多信息,请使用 man 命令阅读 timelimit 的手册页:
man timelimit