timeout
timeout [OPTION] DURATION COMMAND...
Start COMMAND, and kill it if still running after DURATION.
Options
--foreground,-f-
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
--kill-after,-k-
also send a KILL signal if COMMAND is still running this long after the initial signal was sent
--preserve-status,-p-
exit with the same status as COMMAND, even when the command times out
--signal=<SIGNAL>,-s <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
--verbose,-v-
diagnose to stderr any signal sent upon timeout
-
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
-
a command to execute with optional arguments
Upon timeout, send the TERM signal to COMMAND, if no other SIGNAL specified. 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
Examples
Run sleep 10 and terminate it after 3 seconds:
timeout 3s sleep 10
Send a signal to the command after the time limit expires (TERM by default, kill -l to list all signals):
timeout {{[-s|--signal]}} {{INT|HUP|KILL|...}} {{5s}} {{sleep 10}}
Send verbose output to stderr showing signal sent upon timeout:
timeout {{[-v|--verbose]}} {{0.5s|1m|1h|1d|...}} {{command}}
Preserve the exit status of the command regardless of timing out:
timeout {{[-p|--preserve-status]}} {{1s|1m|1h|1d|...}} {{command}}
Send a forceful KILL signal after certain duration if the command ignores initial signal upon timeout:
timeout {{[-k|--kill-after]}} {{5m}} {{30s}} {{command}}
The examples are provided by the tldr-pages project under the CC BY 4.0 License.
Please note that, as uutils is a work in progress, some examples might fail.