xref: /freebsd/bin/timeout/timeout.1 (revision 044f94adff55f13130f03c0c170fa879c8febb5b)
14d846d26SWarner Losh.\" SPDX-License-Identifier: BSD-2-Clause
2e7ab1336SMateusz Piotrowski.\"
3e7ab1336SMateusz Piotrowski.\" Copyright (c) 2014 Baptiste Daroussin <bapt@FreeBSD.org>
4e7ab1336SMateusz Piotrowski.\" All rights reserved.
5e7ab1336SMateusz Piotrowski.\"
6e7ab1336SMateusz Piotrowski.\" Redistribution and use in source and binary forms, with or without
7e7ab1336SMateusz Piotrowski.\" modification, are permitted provided that the following conditions
8e7ab1336SMateusz Piotrowski.\" are met:
9e7ab1336SMateusz Piotrowski.\" 1. Redistributions of source code must retain the above copyright
10e7ab1336SMateusz Piotrowski.\"    notice, this list of conditions and the following disclaimer.
11e7ab1336SMateusz Piotrowski.\" 2. Redistributions in binary form must reproduce the above copyright
12e7ab1336SMateusz Piotrowski.\"    notice, this list of conditions and the following disclaimer in the
13e7ab1336SMateusz Piotrowski.\"    documentation and/or other materials provided with the distribution.
14e7ab1336SMateusz Piotrowski.\"
15e7ab1336SMateusz Piotrowski.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16e7ab1336SMateusz Piotrowski.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17e7ab1336SMateusz Piotrowski.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18e7ab1336SMateusz Piotrowski.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19e7ab1336SMateusz Piotrowski.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20e7ab1336SMateusz Piotrowski.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21e7ab1336SMateusz Piotrowski.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22e7ab1336SMateusz Piotrowski.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23e7ab1336SMateusz Piotrowski.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24e7ab1336SMateusz Piotrowski.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25e7ab1336SMateusz Piotrowski.\" SUCH DAMAGE.
26e7ab1336SMateusz Piotrowski.\"
27*044f94adSGordon Bergling.Dd June 17, 2024
28e7ab1336SMateusz Piotrowski.Dt TIMEOUT 1
29e7ab1336SMateusz Piotrowski.Os
30e7ab1336SMateusz Piotrowski.Sh NAME
31e7ab1336SMateusz Piotrowski.Nm timeout
32e7ab1336SMateusz Piotrowski.Nd run a command with a time limit
33e7ab1336SMateusz Piotrowski.Sh SYNOPSIS
34e7ab1336SMateusz Piotrowski.Nm
35e7ab1336SMateusz Piotrowski.Op Fl -signal Ar sig | Fl s Ar sig
36e7ab1336SMateusz Piotrowski.Op Fl -preserve-status
37e7ab1336SMateusz Piotrowski.Op Fl -kill-after Ar time | Fl k Ar time
38e7ab1336SMateusz Piotrowski.Op Fl -foreground
39e7ab1336SMateusz Piotrowski.Ar duration
40e7ab1336SMateusz Piotrowski.Ar command
41e7ab1336SMateusz Piotrowski.Op Ar args ...
42e7ab1336SMateusz Piotrowski.Sh DESCRIPTION
43e7ab1336SMateusz Piotrowski.Nm
44e7ab1336SMateusz Piotrowskistarts the
45e7ab1336SMateusz Piotrowski.Ar command
46e7ab1336SMateusz Piotrowskiwith its
47e7ab1336SMateusz Piotrowski.Ar args .
48e7ab1336SMateusz PiotrowskiIf the
49e7ab1336SMateusz Piotrowski.Ar command
50e7ab1336SMateusz Piotrowskiis still running after
51e7ab1336SMateusz Piotrowski.Ar duration ,
52e7ab1336SMateusz Piotrowskiit is killed.
53e7ab1336SMateusz PiotrowskiBy default,
54e7ab1336SMateusz Piotrowski.Dv SIGTERM
55e7ab1336SMateusz Piotrowskiis sent.
56e7ab1336SMateusz PiotrowskiThe special
57e7ab1336SMateusz Piotrowski.Ar duration ,
58e7ab1336SMateusz Piotrowskizero, signifies no limit.
59e7ab1336SMateusz PiotrowskiTherefore a signal is never sent if
60e7ab1336SMateusz Piotrowski.Ar duration
61e7ab1336SMateusz Piotrowskiis 0.
62e7ab1336SMateusz Piotrowski.Pp
63e7ab1336SMateusz PiotrowskiThe options are as follows:
64e7ab1336SMateusz Piotrowski.Bl -tag -width indent
65e7ab1336SMateusz Piotrowski.It Fl -preserve-status
66e7ab1336SMateusz PiotrowskiExit with the same status as
67e7ab1336SMateusz Piotrowski.Ar command ,
68e7ab1336SMateusz Piotrowskieven if it times out and is killed.
69e7ab1336SMateusz Piotrowski.It Fl -foreground
70e7ab1336SMateusz PiotrowskiDo not propagate timeout to the children of
71e7ab1336SMateusz Piotrowski.Ar command .
72e7ab1336SMateusz Piotrowski.It Fl s Ar sig , Fl -signal Ar sig
73e7ab1336SMateusz PiotrowskiSpecify the signal to send on timeout.
74e7ab1336SMateusz PiotrowskiBy default,
75e7ab1336SMateusz Piotrowski.Dv SIGTERM
76e7ab1336SMateusz Piotrowskiis sent.
77e7ab1336SMateusz Piotrowski.It Fl k Ar time , Fl -kill-after Ar time
78e7ab1336SMateusz PiotrowskiSend a
79e7ab1336SMateusz Piotrowski.Dv SIGKILL
80e7ab1336SMateusz Piotrowskisignal if
81e7ab1336SMateusz Piotrowski.Ar command
82e7ab1336SMateusz Piotrowskiis still running after
83e7ab1336SMateusz Piotrowski.Ar time
84e7ab1336SMateusz Piotrowskiafter the first signal was sent.
85e7ab1336SMateusz Piotrowski.El
86e7ab1336SMateusz Piotrowski.Sh DURATION FORMAT
87e7ab1336SMateusz Piotrowski.Ar duration
88e7ab1336SMateusz Piotrowskiand
89e7ab1336SMateusz Piotrowski.Ar time
90e7ab1336SMateusz Piotrowskiare non-negative integer or real (decimal) numbers, with an optional
91e7ab1336SMateusz Piotrowskiunit-specifying suffix.
92e7ab1336SMateusz PiotrowskiValues without an explicit unit are interpreted as seconds.
93e7ab1336SMateusz Piotrowski.Pp
94e7ab1336SMateusz PiotrowskiSupported unit symbols are:
95e7ab1336SMateusz Piotrowski.Bl -tag -width indent -compact
96e7ab1336SMateusz Piotrowski.It Cm s
97e7ab1336SMateusz Piotrowskiseconds
98e7ab1336SMateusz Piotrowski.It Cm m
99e7ab1336SMateusz Piotrowskiminutes
100e7ab1336SMateusz Piotrowski.It Cm h
101e7ab1336SMateusz Piotrowskihours
102e7ab1336SMateusz Piotrowski.It Cm d
103e7ab1336SMateusz Piotrowskidays
104e7ab1336SMateusz Piotrowski.El
105e7ab1336SMateusz Piotrowski.Sh EXIT STATUS
106e7ab1336SMateusz PiotrowskiIf the timeout was not reached, the exit status of
107e7ab1336SMateusz Piotrowski.Ar command
108e7ab1336SMateusz Piotrowskiis returned.
109e7ab1336SMateusz Piotrowski.Pp
110e7ab1336SMateusz PiotrowskiIf the timeout was reached and
111e7ab1336SMateusz Piotrowski.Fl -preserve-status
112e7ab1336SMateusz Piotrowskiis set, the exit status of
113e7ab1336SMateusz Piotrowski.Ar command
114e7ab1336SMateusz Piotrowskiis returned.
115e7ab1336SMateusz PiotrowskiIf
116e7ab1336SMateusz Piotrowski.Fl -preserve-status
117e7ab1336SMateusz Piotrowskiis not set, an exit status of 124 is returned.
118e7ab1336SMateusz Piotrowski.Pp
119e7ab1336SMateusz PiotrowskiIf
120e7ab1336SMateusz Piotrowski.Ar command
121e7ab1336SMateusz Piotrowskiexits after receiving a signal, the exit status returned is the signal number
122e7ab1336SMateusz Piotrowskiplus 128.
123e7ab1336SMateusz Piotrowski.Pp
124e7ab1336SMateusz PiotrowskiIf
125e7ab1336SMateusz Piotrowski.Ar command
126e7ab1336SMateusz Piotrowskirefers to a non-existing program, the exit status returned is 127.
127e7ab1336SMateusz Piotrowski.Pp
128e7ab1336SMateusz PiotrowskiIf
129e7ab1336SMateusz Piotrowski.Ar command
130e7ab1336SMateusz Piotrowskiis an otherwise invalid program, the exit status returned is 126.
131e7ab1336SMateusz Piotrowski.Pp
132e7ab1336SMateusz PiotrowskiIf an invalid parameter is passed to
133e7ab1336SMateusz Piotrowski.Fl s
134e7ab1336SMateusz Piotrowskior
135e7ab1336SMateusz Piotrowski.Fl k ,
136e7ab1336SMateusz Piotrowskithe exit status returned is 125.
137e7ab1336SMateusz Piotrowski.Sh EXAMPLES
138e7ab1336SMateusz PiotrowskiRun
139e7ab1336SMateusz Piotrowski.Xr sleep 1
140e7ab1336SMateusz Piotrowskiwith a time limit of 4 seconds.
141e7ab1336SMateusz PiotrowskiSince the command completes in 2 seconds, the exit status is 0:
142e7ab1336SMateusz Piotrowski.Bd -literal -offset indent
143e7ab1336SMateusz Piotrowski$ timeout 4 sleep 2
144e7ab1336SMateusz Piotrowski$ echo $?
145e7ab1336SMateusz Piotrowski0
146e7ab1336SMateusz Piotrowski.Ed
147e7ab1336SMateusz Piotrowski.Pp
148e7ab1336SMateusz PiotrowskiRun
149e7ab1336SMateusz Piotrowski.Xr sleep 1
150e7ab1336SMateusz Piotrowskifor 4 seconds and terminate process after 2 seconds.
151e7ab1336SMateusz Piotrowski124 is returned since no
152e7ab1336SMateusz Piotrowski.Fl -preserve-status
153e7ab1336SMateusz Piotrowskiis used:
154e7ab1336SMateusz Piotrowski.Bd -literal -offset indent
155e7ab1336SMateusz Piotrowski$ timeout 2 sleep 4
156e7ab1336SMateusz Piotrowski$ echo $?
157e7ab1336SMateusz Piotrowski124
158e7ab1336SMateusz Piotrowski.Ed
159e7ab1336SMateusz Piotrowski.Pp
160e7ab1336SMateusz PiotrowskiSame as above but preserving status.
161e7ab1336SMateusz PiotrowskiExit status is 128 + signal number (15 for
162e7ab1336SMateusz Piotrowski.Va SIGTERM ) :
163e7ab1336SMateusz Piotrowski.Bd -literal -offset indent
164e7ab1336SMateusz Piotrowski$ timeout --preserve-status 2 sleep 4
165e7ab1336SMateusz Piotrowski$ echo $?
166e7ab1336SMateusz Piotrowski143
167e7ab1336SMateusz Piotrowski.Ed
168e7ab1336SMateusz Piotrowski.Pp
169e7ab1336SMateusz PiotrowskiSame as above but sending
170e7ab1336SMateusz Piotrowski.Va SIGALRM
171e7ab1336SMateusz Piotrowski(signal number 14) instead of
172e7ab1336SMateusz Piotrowski.Va SIGTERM :
173e7ab1336SMateusz Piotrowski.Bd -literal -offset indent
174e7ab1336SMateusz Piotrowski$ timeout --preserve-status -s SIGALRM 2 sleep 4
175e7ab1336SMateusz Piotrowski$ echo $?
176e7ab1336SMateusz Piotrowski142
177e7ab1336SMateusz Piotrowski.Ed
178e7ab1336SMateusz Piotrowski.Pp
179e7ab1336SMateusz PiotrowskiTry to
180e7ab1336SMateusz Piotrowski.Xr fetch 1
181e7ab1336SMateusz Piotrowskithe PDF version of the
182e7ab1336SMateusz Piotrowski.Fx
183e7ab1336SMateusz PiotrowskiHandbook.
184e7ab1336SMateusz PiotrowskiSend a
185e7ab1336SMateusz Piotrowski.Va SIGTERM
186e7ab1336SMateusz Piotrowskisignal after 1 minute and send a
187e7ab1336SMateusz Piotrowski.Va SIGKILL
188e7ab1336SMateusz Piotrowskisignal 5 seconds later if the process refuses to stop:
189e7ab1336SMateusz Piotrowski.Bd -literal -offset indent
190e7ab1336SMateusz Piotrowski$ timeout -k 5s 1m fetch \\
191e7ab1336SMateusz Piotrowski> https://download.freebsd.org/ftp/doc/en/books/handbook/book.pdf
192e7ab1336SMateusz Piotrowski.Ed
193e7ab1336SMateusz Piotrowski.Sh SEE ALSO
194e7ab1336SMateusz Piotrowski.Xr kill 1 ,
19570bc3f43STom Hukins.Xr nohup 1 ,
19670bc3f43STom Hukins.Xr signal 3 ,
19770bc3f43STom Hukins.Xr daemon 8
198*044f94adSGordon Bergling.Sh STANDARDS
199*044f94adSGordon BerglingThe
200*044f94adSGordon Bergling.Nm
201*044f94adSGordon Berglingutility is compliant with the
202*044f94adSGordon Bergling.St -p1003.1-2024
203*044f94adSGordon Berglingspecification.
204e7ab1336SMateusz Piotrowski.Sh HISTORY
205e7ab1336SMateusz PiotrowskiThe
206e7ab1336SMateusz Piotrowski.Nm
207e7ab1336SMateusz Piotrowskicommand first appeared in
208e7ab1336SMateusz Piotrowski.Fx 10.3 .
209e7ab1336SMateusz Piotrowski.Sh AUTHORS
210e7ab1336SMateusz Piotrowski.An Baptiste Daroussin Aq Mt bapt@FreeBSD.org
211e7ab1336SMateusz Piotrowskiand
212e7ab1336SMateusz Piotrowski.An Vsevolod Stakhov Aq Mt vsevolod@FreeBSD.org
213