「timeout(1)」-

在限制的时间内运行某个命令

命令语法格式

timeout [OPTION] DURATION COMMAND [ARG]…
timeout [OPTION]

命令描述

运行命令COMMAND,如果到达DURATION指定的时间后程序COMMAND还在运行,则结束它。

COMMAND不可以是内建的实用程序。参考特殊的内置实用程序

命令支持的选项及含义

需要提供给长选项的参数也必须提供给相应的短选项。

–preserve-status
在超时时,返回COMMAND命令的退出状态,而不是暗示了超时的特定退出状态。如果命令COMMAND运行的时间量是不确定,这很有用。

–foreground
不要创建单独的后台程序组,以便托管命令可以正常使用前台TTY。在两种情况下需要支持这种不直接从交互式Shell启动的命令:

    1. 命令COMMAND是交互式的,例如需要从终端读取。
    2. 用户希望直接向终端里的命令发送信号(例如Ctrl-C)

请注意,在这种操作模式下,COMMAND的任何子命令都不会超时。此外,SIGCONT信号不会被发送给命令,因为前台进程通常不需要该命令,并且可能会导致监视器本身的程序(例如GDB)出现间歇性信号传送问题。

-k, –kill-after=DURATION
在指定的持续时间后,通过发送’KILL’信号确保被监控的命令被终止。如果没有这个选项,如果选定的信号不是致命的,timeout不会中止命令。

-s, –signal=SIGNAL
在超时时,向命令发送SIGNAL信号,而不是默认的’TERM’信号。信号可能是一个名字,如’HUP’,或者是一个数字。请参阅信号规范

-v, –verbose
输出诊断信息。有些版本的timeout不支持该选项。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

关于DURATION参数

DURATION是一个浮点类型的参数,可以跟以下表示单位的后缀:

‘s’ 秒,这也是默认的

‘m’ 分钟

‘h’ 小时

‘d’ 天

DURATION参数为0,则会禁用关联的超时。请注意,实际的超时时间取决于系统条件,在指定亚秒超时时应特别考虑这些条件。

退出状态

124 命令超时

125 timeout命令自身执行失败

126 找到命令COMMAND,但是无法执行。

127 无法找到COMMAND命令。

137 如果向COMMAND发送了KILL(9)信号(128+9)。

其他的状态值为COMMAND的退出状态。

相关手册

kill(1)

查看在线手册:http://www.gnu.org/software/coreutils/timeout

查看info手册:info ‘(coreutils) timeout invocation’

参考文献

  • man 1 timeout, version GNU coreutils 8.28

更新日志

  • 06/23/2018 创建文章