在 Linux 中使用 Timeout 命令为正在运行的命令设置计时器
使用 timeout 命令,您可以设置运行其他命令和程序的时间限制。如果程序运行时间超过设置的限制,timeout 会终止该程序。
听起来不错,对吧?让我们看看如何使用这个命令。
在 Linux 中使用超时命令
以下是超时命令的语法:
timeout [options] seconds command
如您所见,这里的时间始终以秒为单位设置。
让我们以sleep 命令为例。sleep 命令基本上会“休眠”到指定的时间。这意味着它只是等待那么多秒。
timeout 4 sleep 10
因此,如果我使用 sleep 10,shell 将等待 10 秒。但如果我设置 4 秒的超时时间,原本应该运行 10 秒的 sleep 命令将在 4 秒内结束。
默认情况下,timeout 命令会发送SIGTERM来礼貌地终止正在运行的程序。您可以使用 -s 选项发送其他信号。
您可以使用 kill -l 命令查看Linux 中的所有终止信号。假设您想发送 SIGKILL 信号 (kill -9),而不是默认的 SIGTERM。您可以使用类似下面的命令:
timeout -s SIGKILL 3 sleep 30
您也可以使用 KILL 或 9(kill -l 中列出的SIGKILL的数字)代替 SIGKILL。
强制终止程序不是一件好事。但程序可以忽略 SIGTERM。
更好的处理方法是,仅当您的初始终止请求被正在运行的程序忽略时才发送终止信号。
因此,假设您希望运行一个程序不超过 5 秒。但是,如果正在运行的程序拒绝停止,您可以在发送默认 SIGTERM 3 秒后发送终止信号。您可以使用以下方法:
timeout -k 3 5 program
这意味着你的程序不会运行超过 8 秒。你可以使用 time 命令来检查程序实际运行了多长时间。
超时命令有实际用途吗?
这听起来像是那些你可能不经常使用的晦涩 Linux 命令之一。然而,在某些特殊情况下它可能很有用。
例如,如果您开始玩终端游戏来让自己的心情稍微放松一下,但您忘记了时间,并且继续玩了远远超出预期的时间。
在这种情况下,超时命令很有用。
请继续关注以了解更多 Linux 命令。请订阅新闻通讯以定期收到提示和技巧。