timeout [OPTION] DURATION COMMAND [ARG]...
!subtitle:功能
执行命令时附带超时限制。
!subtitle:类型
可执行文件(/usr/bin/timeout),属于 coreutils。
!subtitle:参数
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 - 命令的参数列表
!subtitle:返回值
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)