No.087プロセスとジョブ
timeout
タイムアウト・実行時間制限
コマンドに制限時間を設定します。自動化や監視で「いつまで待つか」を明示したい時に有効です。
答えよく使う形
注意危険度は中程度です。
$ timeout 2 sleep 10
echo $?
124
$ timeout 5 sleep 1
echo $?
0
$ timeout 5 sleep 10
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
どんなコマンド?
外部コマンドの待ち過ぎを防ぎたい時、自動化で上限時間を決めたい時、ハングに備えたい時に使います。
timeoutは、指定した時間だけコマンドの終了を待ち、制限時間を超えた場合にシグナルを送るコマンドです。固定待機とは異なり、「一定時間で諦める」制御を簡潔に書けます。
既定ではTERMシグナルを送りますが、必要に応じて別のシグナルへ変えたり、一定時間後にKILLを送る二段構えにしたりできます。
実務では、応答が返らない外部コマンド、ネットワーク確認、保守手順の自動化で、待ち過ぎを防ぐ安全装置として有効です。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ timeout
使用例と実行結果
行を押すとコピーできます。
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