Centosでプログラムのタイムアウトを設定するにはどうすればいいですか?Centosでプログラムにタイムアウトを設定する方法
timeoutは奇妙なLinuxコマンドで、プログラムの実行時間を制御することができます。これは、プログラムの実行時間を制御するのに非常に役立ちます。
timeoutはCentOS 6プラットフォーム上で、ソフトウェアパッケージcoreutilsに属する
# which timeout
/usr/bin/timeout
# rpm -qf /usr/bin/timeout
coreutils-8.4-19.el6_4.2.x86_64
timeoutの原理は簡単で、簡単なタイマー、killコマンド、その中で-sはkillのパラメータと、具体的にどのように殺すか、それを見ることができます。
man timeoutはわずか半ページで、以下の通りです。
TIMEOUT(1) User Commands TIMEOUT(1)
NAME
timeout - run a commandwith a timelimit
SYNOPSIS
timeout [OPTION] NUMBER[SUFFIX] COMMAND [ARG]...
timeout [OPTION]
DESCRIPTION
Start COMMAND, and killit ifstill running after NUMBER seconds. SUFFIX may be ‘s’forseconds (the default), ‘m’ forminutes, ‘h’
forhours or ‘d’ fordays.
Mandatory arguments to long options are mandatory forshort options too.
-s, --signal=SIGNAL
specify the signal to be sent on timeout. SIGNAL may be a name like ‘HUP’ or a number. See ‘kill-l‘ fora list of signals
--help display this help and exit
--version
output version information and exit
If the commandtimesout, thenexitwith status 124. Otherwise, exitwith the status of COMMAND. If no signal is specified, send the
TERM signal upon timeout. The TERM signal kills any process that does not block or catch that signal. For other processes, it may be
necessary to use the KILL (9) signal, since this signal cannot be caught.
AUTHOR
Written by Padraig Brady.
使用例
1timeout 120 command
上記のcommandコマンドが120秒以内に完了すると、無事終了し、120秒を超えると殺されます。
スクリプトはいつも馬鹿な一気に走ってしまい、別のスクリプトを書いて定期的に殺す必要があります。自分でtimeout命令があって、腰も痛くなくて、足も酸っぱくなくて、走って休んだほうが健康です。
一言で言えば、スクリプトやcrontabで車輪を作る必要はありません。