Linux 超时命令初学者讲解(附实例)
在此页
- Linux 超时命令
- Q1。如何使用超时命令?
- Q2。如何在输出中获取命令退出状态?
- Q3。如何更改信号超时发送?
- Q4。如何让超时自动发送KILL信号?
- 结论
有时,当您在 Linux 中执行命令时,您可能希望它运行一段设定的时间。存在一个命令行实用程序 - timeout - 专门为此目的开发的。在本文中,我们将使用一些易于理解的示例来讨论此命令的基础知识。
但在此之前,值得一提的是,本教程中的所有示例都已在 Ubuntu 18.04 LTS 机器上进行了测试。
Linux超时命令
顾名思义,Linux 中的超时命令允许您执行有时间限制的命令。以下是它的语法:
timeout [OPTION] DURATION COMMAND [ARG]...
以下是工具手册页对其的解释:
timeout - run a command with a time limit
Start COMMAND, and kill it if still running after DURATION
以下是一些 Q&A 风格的示例,可以让您更好地了解此工具的工作原理。
Q1。如何使用超时命令?
基本用法非常简单 - 只需在输入中指定超时值(以秒为单位)以及要运行的命令来执行超时。
例如,如果你想在 5 秒后使 ping 命令超时,在这种情况下你可以使用超时。
timeout 5 ping google.com
Q2。如何在输出中获取命令退出状态?
默认情况下,如果超时命令成功,它会返回 124 作为退出状态。下面是一个例子:

在第一种情况下,我让 timeout 命令成功运行,如您所见,退出状态为 124。但是,在第二次运行期间,我使用 Ctrl+C 强行终止了命令,在这种情况下,退出状态是0。
但是,如果您希望超时返回输入命令状态,即使超时成功运行,您也必须使用 --preserve-status 命令行选项。
例如:
timeout --preserve-status 5 ping google.com
Q3.如何更改信号超时发送?
猜测超时通过向输入命令发送信号以便后者在截止时间临近时停止执行来猜测超时是没有意义的。默认情况下,命令使用 SIGTERM
。
但是,如果需要,您可以更改超时发送的信号。为此,您必须使用 -s 命令行选项并将您希望超时发送的信号指定为输入。
例如:
timeout -s SIGKILL [COMMAND]
要获取您可以发送的可用信号列表,请运行以下命令:
kill -l
Q4.如何让超时自动发送KILL信号?
有时,您可能会遇到即使在超时发送初始信号后仍继续运行的输入命令。对于这些情况,timeout 提供了一个选项 --kill-after。
手册页是这样解释的:
-k, --kill-after=DURATION
also send a KILL signal if COMMAND is still running
this long after the initial signal was sent
所以正如你所看到的,你需要指定一个持续时间让timeout知道这个信号要发送多少时间。
结论
根据您所做的工作类型,超时命令可以证明是一个非常方便的工具。在本教程中,我们讨论了该实用程序提供的大部分选项。完成这些练习后,您可以通过前往其手册页了解有关超时的更多信息。