跳到主要内容

Linux timeout 命令 - 限制命令执行时间

介绍

timeout 是一个 Linux 系统中的命令,用于在指定时间内运行命令,并在超时时终止该命令的执行。对于需要控制命令执行时间的情况非常有用,特别是在 Shell 脚本或批处理任务中。

语法

timeout [选项] 停留时间 命令 [参数]...

停留时间的后缀 s 代表秒(默认值),m 代表分,h 代表小时,d 代表天。如果不添加任何单位,默认是秒。如果持续时间为 0,则禁用关联的超时。

选项

  • --preserve-status:退出时返回值与所运行命令的返回值保持相同,即使命令超时也这样设置。
  • --foreground:当 timeout 不是直接从 shell 命令行开始运行时,允许所运行的命令从 TTY 读取输入并获取 TTY 信号;在此模式下,所运行的命令的子进程不会受超时的影响。。
  • -k, --kill-after=持续时间:如果所运行命令在初始信号发出后再经过所指定持续时间以后仍然在运行,则对其发送 KILL 信号。
  • -s, --signal=信号:指定超时发生时要发送的信号;所指定的信号可以是如“HUP”这样的名称,或是一个数字;请参见“kill -l”以获取可用信号列表。
  • -v, --verbose:对任何超时后发送的信号,向标准错误输出诊断信息。
  • --help:显示此帮助信息并退出。
  • --version:显示版本信息并退出。

示例

运行 command_to_run 命令,并在 5 秒后终止它的执行:

timeout 5s command_to_run

运行命令一分钟,如果命令没有结束,将在10秒后终止命令:

timeout -k 10s 1m command_to_run