#Bash 的 timeout 命令
timeout [OPTION] DURATION COMMAND [ARG]...
功能
执行命令时附带超时限制。
类型
可执行文件(/usr/bin/timeout),属于 coreutils。
参数
OPTION选项:--preserve-status- 超时时仍返回COMMAND的返回值--foreground- 当不从 shell 运行命令时,运行COMMAND从 tty 读取输入和接收信号;此模式下COMMAND创建的子进程不会超时-k,--kill-after=DURATION- 发送信号后如果经过DURATION时间仍未退出,则发送SIGKILL-s,--signal=SIGNAL- 指定超时时发送的信号-v,--verbose- 打印详细信息--help- 显示帮助--version- 显示版本
DURATION- 超时时间COMMAND- 执行的命令ARG- 命令的参数列表
返回值
- 124 - 超时(且未启用
--preserve-status选项) - 125 -
timeout自身失败 - 126 -
COMMAND不能运行 - 127 -
COMMAND不存在 - 137 -
SIGKILL - 其它情况返回
COMMAND的返回值
#示例
$ timeout -v 3s sleep 10s
timeout: sending signal TERM to command ‘sleep’
#推荐阅读
#手册
TIMEOUT(1) User Commands TIMEOUT(1) NAME timeout - run a command with a time limit SYNOPSIS timeout [OPTION] DURATION COMMAND [ARG]... timeout [OPTION] DESCRIPTION Start COMMAND, and kill it if still running after DURATION. Mandatory arguments to long options are mandatory for short options too. --preserve-status exit with the same status as COMMAND, even when the command times out --foreground when not running timeout directly from a shell prompt, allow COMMAND to read from the TTY and get TTY signals; in this mode, children of COMMAND will not be timed out -k, --kill-after=DURATION also send a KILL signal if COMMAND is still running this long after the initial signal was sent -s, --signal=SIGNAL specify the signal to be sent on timeout; SIGNAL may be a name like 'HUP' or a number; see 'kill -l' for a list of signals -v, --verbose diagnose to stderr any signal sent upon timeout --help display this help and exit --version output version information and exit DURATION is a floating point number with an optional suffix: 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days. A duration of 0 disables the associated timeout. Upon timeout, send the TERM signal to COMMAND, if no other SIGNAL spec‐ ified. The TERM signal kills any process that does not block or catch that signal. It may be necessary to use the KILL signal, since this signal can't be caught. Exit status: 124 if COMMAND times out, and --preserve-status is not specified 125 if the timeout command itself fails 126 if COMMAND is found but cannot be invoked 127 if COMMAND cannot be found 137 if COMMAND (or timeout itself) is sent the KILL (9) signal (128+9) - the exit status of COMMAND otherwise BUGS Some platforms don't currently support timeouts beyond the year 2038. AUTHOR Written by Padraig Brady. REPORTING BUGS GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report any translation bugs to <https://translationproject.org/team/> COPYRIGHT Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO kill(1) Full documentation <https://www.gnu.org/software/coreutils/timeout> or available locally via: info '(coreutils) timeout invocation' GNU coreutils 9.4 April 2024 TIMEOUT(1)