1.\" Copyright (c) 2014 Baptiste Daroussin <[email protected]> 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd Oct 28, 2014 28.Dt TIMEOUT 1 29.Os 30.Sh NAME 31.Nm timeout 32.Nd run a command with a time limit 33.Sh SYNOPSIS 34.Nm 35.Op Fl -signal Ar sig | Fl s Ar sig 36.Op Fl -preserve-status 37.Op Fl -kill-after Ar time | Fl k Ar time 38.Op Fl -foreground 39.Ao Ar duration Ac 40.Ao Ar command Ac 41.Ao Ar args ... Ac 42.Sh DESCRIPTION 43.Nm 44starts the 45.Ar command 46with its 47.Ar args. 48If 49.Ar command 50is still running after 51.Ar duration , 52it is killed. 53By default, 54.Ar SIGTERM. 55is sent. 56.Bl -tag -width "-k time, --kill-after time" 57.It Fl -preserve-status 58Always exits with the same status as 59.Ar command 60even if it times out. 61.It Fl -foreground 62Do not propagate timeout to the 63.Ar command 64children. 65.It Fl s Ar sig , Fl -signal Ar sig 66Specify the signal to send on timeout. 67By default, 68.Ar SIGTERM . 69is sent. 70.It Fl k Ar time , Fl -kill-after Ar time 71Send a second kill signal if 72.Ar command 73is still running after 74.Ar time 75after the first signal was sent. 76.El 77.Sh DURATION FORMAT 78.Ar duration 79and 80.Ar time 81can be integer or decimal numbers. 82Values without unit symbols are interpreted as seconds. 83.Pp 84Supported unit symbols are: 85.Bl -tag -width indent -compact 86.It s 87seconds 88.It m 89minutes 90.It h 91hours 92.It d 93days 94.El 95.Sh EXIT STATUS 96If the timeout was not reached, the exit status of 97.Ar command 98is returned. 99.Pp 100If the timeout was reached and 101.Fl -preserve-status 102is set, the exit status of 103.Ar command 104is returned. 105If 106.Fl -preserve-status 107is not set, an exit status of 124 is returned. 108.Pp 109If 110.Ar command 111exits after receiving a signal, the exit status returned is the signal number 112plus 128. 113.Pp 114If 115.Ar command 116is an invalid command, the exit status returned is 126. 117.Pp 118If 119.Ar command 120is a non existing command, the exit status returned is 127. 121.Pp 122If an invalid parameter is passed to 123.Fl s 124or 125.Fl k , 126the exit status return is 125. 127.Sh SEE ALSO 128.Xr kill 1 , 129.Xr signal 3 130