Annotation of src/usr.bin/timeout/timeout.1, Revision 1.7
1.7 ! jmc 1: .\" $OpenBSD: timeout.1,v 1.6 2023/01/10 21:10:37 jmc Exp $
1.1 job 2: .\" $NetBSD: timeout.1,v 1.4 2016/10/13 06:22:26 dholland Exp $
3: .\"
4: .\" Copyright (c) 2014 Baptiste Daroussin <bapt@FreeBSD.org>
5: .\" All rights reserved.
6: .\"
7: .\" Redistribution and use in source and binary forms, with or without
8: .\" modification, are permitted provided that the following conditions
9: .\" are met:
10: .\" 1. Redistributions of source code must retain the above copyright
11: .\" notice, this list of conditions and the following disclaimer.
12: .\" 2. Redistributions in binary form must reproduce the above copyright
13: .\" notice, this list of conditions and the following disclaimer in the
14: .\" documentation and/or other materials provided with the distribution.
15: .\"
16: .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17: .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18: .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19: .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20: .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21: .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22: .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23: .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24: .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25: .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26: .\" SUCH DAMAGE.
27: .\"
28: .\" $FreeBSD: head/usr.bin/timeout/timeout.1 268861 2014-07-18 22:56:59Z bapt $
29: .\"
1.6 jmc 30: .Dd $Mdocdate: January 10 2023 $
1.1 job 31: .Dt TIMEOUT 1
32: .Os
33: .Sh NAME
34: .Nm timeout
35: .Nd run a command with a time limit
36: .Sh SYNOPSIS
37: .Nm
1.5 job 38: .Op Fl fp
1.2 jmc 39: .Op Fl k Ar time
1.7 ! jmc 40: .Op Fl s Ar signal
1.2 jmc 41: .Ar duration
42: .Ar command
1.4 kn 43: .Op Ar arg ...
1.1 job 44: .Sh DESCRIPTION
1.2 jmc 45: The
1.1 job 46: .Nm
1.2 jmc 47: utility executes
1.4 kn 48: .Ar command
1.2 jmc 49: and kills it if it is still running after the
50: specified
51: .Ar duration .
1.1 job 52: If
1.2 jmc 53: .Ar duration
54: is 0, the timeout is disabled.
55: .Pp
56: The options are as follows:
57: .Bl -tag -width Ds
1.5 job 58: .It Fl f , -foreground
59: Do not propagate the timeout signal to children processes.
1.2 jmc 60: .It Fl k Ar time , Fl -kill-after Ns = Ns Ar time
1.3 schwarze 61: Send a second signal,
62: .Dv SIGKILL ,
63: if the command is still running
1.6 jmc 64: .Ar time
65: after the first signal was sent.
1.5 job 66: .It Fl p , -preserve-status
67: Always exit with the same status as
68: .Ar command ,
69: even if the timeout was reached.
1.7 ! jmc 70: .It Fl s Ar signal , Fl -signal Ns = Ns Ar signal
! 71: A non-negative decimal number or symbolic signal name specifying
! 72: the signal to send on timeout, instead of the default
1.2 jmc 73: .Dv SIGTERM .
1.1 job 74: .El
75: .Sh DURATION FORMAT
76: .Ar duration
77: and
78: .Ar time
1.2 jmc 79: may contain a decimal fraction.
80: The value defaults to seconds unless a unit suffix is given.
81: .Pp
82: The supported unit suffixes are:
1.1 job 83: .Pp
1.2 jmc 84: .Bl -tag -width Ds -offset indent -compact
1.1 job 85: .It s
86: seconds
87: .It m
88: minutes
89: .It h
90: hours
91: .It d
92: days
93: .El
94: .Sh EXIT STATUS
1.3 schwarze 95: If the timeout was not reached or
1.5 job 96: .Fl p
1.3 schwarze 97: was set, the exit status of
1.1 job 98: .Ar command
99: is returned.
100: .Pp
101: If the timeout was reached and
1.5 job 102: .Fl p
1.2 jmc 103: was not set, an exit status of 124 is returned.
1.1 job 104: .Pp
105: If
106: .Ar command
1.2 jmc 107: exited after receiving a signal, the exit status returned is the signal number
108: plus 128.
1.1 job 109: .Sh SEE ALSO
110: .Xr kill 1 ,
111: .Xr signal 3
112: .Sh HISTORY
113: The
114: .Nm
1.3 schwarze 115: utility first appeared in GNU Coreutils 7.0 and has been available since
116: .Ox 7.0 .