在限制的时间内运行某个命令
命令语法格式
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是一个浮点类型的参数,可以跟以下表示单位的后缀:
‘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 创建文章