NAME
timelimit - effectively limit the absolute execution time of a process
SYNOPSIS
timelimit [-pq] [-S killsig] [-s warnsig] [-T killtime] [-t warntime]
command [arguments ...]
DESCRIPTION
The timelimit utility executes a given command with the supplied
arguments and terminates the spawned process after a given time with a
given signal. If the process exits before the time limit has elapsed,
timelimit will silently exit, too.
Options:
-p If the child process is terminated by a signal, timelimit
propagates this condition, i.e. sends the same signal to itself.
This allows the program executing timelimit to determine whether
the child process was terminated by a signal or actually exited
with an exit code larger than 128.
-q Quiet operation - timelimit does not output diagnostic messages
about signals sent to the child process.
-S killsig
Specify the number of the signal to be sent to the process
killtime seconds after warntime has expired. Defaults to 9
(SIGKILL).
-s warnsig
Specify the number of the signal to be sent to the process
warntime seconds after it has been started. Defaults to 15
(SIGTERM).
-T killtime
Specify the maximum execution time of the process before sending
killsig after warnsig has been sent. Defaults to 120 seconds.
-t warntime
Specify the maximum execution time of the process in seconds
before sending warnsig. Defaults to 3600 seconds.
ENVIRONMENT
KILLSIG
The killsig to use if the -S option was not specified.
KILLTIME
The killtime to use if the -T option was not specified.
WARNSIG
The warnsig to use if the -s option was not specified.
WARNTIME
The warntime to use if the -t option was not specified.
EXIT STATUS
If the child process exits normally, the timelimit utility will pass its
exit code on up. If the child process is terminated by a signal and the
-p flag was not specified, the timelimit utility’s exit status is 128
plus the signal number, similar to sh(1). If the -p flag was specified,
the timelimit utility will raise the signal itself so that its own parent
process may in turn reliably distinguish between a signal and a larger
than 128 exit code.
In rare cases, the timelimit utility may encounter a system or user
error; then, its exit status is one of the standard sysexits(3) values:
EX_USAGE
The command-line parameters and options were incorrectly
specified.
EX_SOFTWARE
The timelimit utility itself received an unexpected signal while
waiting for the child process to terminate.
EX_OSERR
The timelimit utility was unable to execute the child process,
wait for it to terminate, or examine its exit status.
EXAMPLES
The following examples are shown as given to the shell:
timelimit -p /usr/local/bin/rsync rsync://some.host/dir /opt/mirror
Run the rsync program to mirror a WWW or FTP site and kill it if it runs
longer than 1 hour (that is 3600 seconds) with SIGTERM. If the rsync
process does not exit after receiving the SIGTERM, timelimit issues a
SIGKILL 120 seconds after the SIGTERM. If the rsync process is
terminated by a signal, timelimit will itself raise this signal.
tcpserver 0 8888 timelimit -t600 -T300 /opt/services/chat/stats
Start a tcpserver(n) process listening on tcp port 8888; each client
connection shall invoke an instance of an IRC statistics tool under
/opt/services/chat and kill it after 600 seconds have elapsed. If the
stats process is still running after the SIGTERM, it will be killed by a
SIGKILL sent 300 seconds later.
env WARNTIME=600 WARNSIG=1 KILLTIME=30 timelimit sh stats.sh
Start a shell script and kill it with a SIGHUP in 600 seconds. If the
shell gets stuck and does not respond to the SIGHUP, kill it with the
default SIGKILL after 30 more seconds.
SEE ALSO
kill(1), rsync(1), signal(3), tcpserver(n)
STANDARDS
No standards documentation was harmed in the process of creating
timelimit.
BUGS
Please report any bugs in timelimit to the author.
AUTHOR
The timelimit utility was conceived and written by Peter Pentchev
〈roam@ringlet.net〉 with contributions by Karsten W Rohrbach
〈karsten@rohrbach.de〉 and Teddy Hogeborn 〈teddy@fukt.bsnet.se〉.