No.087プロセスとジョブ

timeout

タイムアウト・実行時間制限

知識レベル 実践注意一般ユーザーで使える

コマンドに制限時間を設定します。自動化や監視で「いつまで待つか」を明示したい時に有効です。

答えよく使う形

  1. 制限時間を超えると124で終了します
  2. 制限時間内に終われば通常成功です
  3. 制限時間超過時に送るシグナルを変えます

注意危険度は中程度です。

visitor@goodly: ~

$ timeout 2 sleep 10 echo $?

124

$ timeout 5 sleep 1 echo $?

0

$ timeout 5 sleep 10

どんなコマンド?

こんなときに

外部コマンドの待ち過ぎを防ぎたい時、自動化で上限時間を決めたい時、ハングに備えたい時に使います。

timeoutは、指定した時間だけコマンドの終了を待ち、制限時間を超えた場合にシグナルを送るコマンドです。固定待機とは異なり、「一定時間で諦める」制御を簡潔に書けます。

既定ではTERMシグナルを送りますが、必要に応じて別のシグナルへ変えたり、一定時間後にKILLを送る二段構えにしたりできます。

実務では、応答が返らない外部コマンド、ネットワーク確認、保守手順の自動化で、待ち過ぎを防ぐ安全装置として有効です。

書き方とオプション

組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。

$ timeout

使用例と実行結果

行を押すとコピーできます。

124
制限時間を超えると124で終了します。
0
制限時間内に終われば通常成功です。

まず安全に試す

3分ミッション

手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。

0 / 1

つまずいたとき

毎回すぐ失敗する

原因制限時間が短過ぎます。

こうする通常時の処理時間を測り、余裕を持った値へ調整します。

TERMでは止まらない

原因対象がTERMを無視しているか、後処理に時間がかかっています。

こうする-kで二段構えにし、最後にKILLを送る猶予を設定します。

終わったときの数(戻り値)

$ echo $?

  • 0正常終了。処理に成功しました。
  • >0対象不存在、権限不足、不正な引数などで処理できませんでした。

気をつけることと入れ方

気をつけること

危険度は中程度です。制限時間を短くし過ぎると正常な処理まで失敗扱いになり、長過ぎると意味が薄れます。

環境による違い

GNU coreutils由来のコマンドで、すべてのUNIX系に必ずあるわけではありません。移植性が必要な手順では存在確認が必要です。

確かめた環境2026-04-09 に確認

よくある質問

sleepと何が違いますか。

sleepはただ待つだけですが、timeoutは待ち時間を超えた対象を止めるための道具です。

終了コード124は何を意味しますか。

timeoutが制限時間超過を検出し、対象を終了させたことを示します。

timeout を最後まで読みました。

Linux コマンド辞典に戻る120 / 144

Goodly のメニュー