コンテンツにスキップ

GNU Core Utilities/timeout

出典: フリー教科書『ウィキブックス(Wikibooks)』

timeout コマンドは、指定した時間が経過すると、実行中のコマンドを自動的に終了させるためのコマンドです。長時間かかる操作を制限するために使用されます。このコマンドは FreeBSD 10.3 で初めて登場しました。

基本的な使い方

[編集]
timeout [オプション] 時間 コマンド [引数...]

主なオプション

[編集]
主なオプション
オプション 説明
-k, --kill-after タイムアウト後に指定した時間が経過すると、プロセスを強制終了します
-s, --signal 指定したシグナルでプロセスを終了します(デフォルトは SIGTERM)
-h, --help ヘルプメッセージの表示
-V, --version バージョン情報の表示

[編集]

コマンドをタイムアウト付きで実行

[編集]
timeout 5s command_to_run

command_to_run を実行し、5秒後に自動的に停止します。

タイムアウト後に強制終了

[編集]
timeout -k 10s 5s command_to_run

command_to_run を5秒間実行し、その後、さらに10秒待って強制終了します。

シグナルを指定して終了

[編集]
timeout -s SIGKILL 5s command_to_run

command_to_run を5秒間実行し、タイムアウト後に SIGKILL シグナルで強制終了します。

時間の指定方法

[編集]

タイムアウト時間は、以下の形式で指定します。

  • 秒(s)、分(m)、時間(h)、日(d)単位で指定可能です。
  • 例: 10s5m2h1d

FreeBSD 10.3 での登場

[編集]

timeout コマンドは FreeBSD 10.3 で新たに登場しました。それ以前のバージョンでは、同様の機能を提供するコマンドがなかったため、ユーザーはシェルスクリプトや他のツールを使ってタイムアウトの制御を行っていました。

出力

[編集]

timeout コマンドがタイムアウトに達した場合、コマンドは終了し、標準エラーにタイムアウトメッセージが表示されます。

timeout: コマンド 'command_to_run' がタイムアウトしました

その他の情報

[編集]

timeout コマンドは、特に長時間実行されるコマンドや処理に対して、指定した時間内に完了しなかった場合に自動的に停止させることができるため、スクリプトや自動化された環境で非常に有用です。