coreutilsにいつのまにかタイムアウト用コマンドが存在していた
ふとしたきっかけで/usr/binにtimeoutというコマンドが存在するということを発見した。コマンド名から推測するに、指定された時間以内にプロセスが終了しなければ強制終了でもするコマンドなのだろう。--helpオプションをつけるとGNU Coreutils7.4と出てきた。coreutilsのコマンドらしい。
以前、プロセスをタイムアウトする機能をもつコマンドを探しても見つからずにネットで拾ったshスクリプトを使った経験があったので、いつの間に組み込みコマンドとして提供されていたのだろうと調べてみた。
timeoutコマンドはcoreutils7.0以降に含まれるコマンドで、あるコマンドが指定された秒数以内に終了しない場合にシグナルを送信するコマンドだ。デフォルトのシグナルはKILL。
たとえば10秒以内に処理が終わらない場合にプロセスを終了させるにはこう書く。
$ timeout 10 command
便利。
比較的最近に実装されたコマンドだからか、日本語で得られる情報はほぼない。
参考:
coreutils-7.0 released (beta)
coreutils-7.1 released [stable]
timeout: Run a command with a time limit