在 Linux 中使用 Timeout 命令为正在运行的命令设置一个计时器

使用 timeout 命令,您可以设置运行其他命令和程序的时间限制。 如果程序运行时间超过设定的限制,超时会杀死它。

听起来不错,对吧? 让我们看看如何使用这个命令。

在 Linux 中使用 timeout 命令

以下是 timeout 命令的语法:

timeout [options] seconds command

如您所见,这里的时间始终以秒为单位。

让我们来一个 example 使用 sleep 命令。 sleep 命令基本上“休眠”到分配的时间。 这意味着它只等待那么多秒。

timeout 4 sleep 10

所以如果我使用 sleep 10,shell 会等待 10 秒。 但是,如果我设置了 4 秒的超时时间,那么本应运行 10 秒的 sleep 命令将在 4 秒后结束。

默认情况下,超时命令发送 SIGTERM 以礼貌地终止正在运行的程序。 您可以使用 -s 选项发送一些其他信号。

您可以使用 kill -l 命令查看 Linux 中的所有终止信号。 假设您要发送 SIGKILL 信号 (kill -9) 而不是默认的 SIGTERM。 你可以使用这样的东西:

timeout -s SIGKILL 3 sleep 30

您也可以使用 KILL 或 9(用于 杀戮 如 kill -l) 中列出的,而不是 SIGKILL。

硬杀一个程序不是一件好事。 但是程序可以忽略 SIGTERM。

更好的处理方法是仅在您的初始终止请求被正在运行的程序忽略时才发送终止信号。

所以,假设你想运行一个程序不超过 5 秒。 但是如果正在运行的程序拒绝停止,你会在发送默认的 SIGTERM 3 秒后发送 kill 信号。 这是您可以使用的:

timeout -k 3 5 program

这意味着您的程序运行时间不会超过 8 秒。 您可以使用 time 命令检查程序实际运行了多长时间。

超时命令有实际用途吗?

这听起来像是您可能不会每天都使用的那些晦涩难懂的 Linux 命令之一。 但是,它在某些特殊情况下可能很有用。

为了 example,如果您开始玩终端游戏以稍微恢复一下心情,但您忘记了时间并继续玩远远超过所需时间。

timeout 命令在这种情况下很有帮助。

请继续关注以了解更多 Linux 命令。 请订阅时事通讯以接收定期提示和技巧。