【 timeout 】コマンド――制限時間を付けて指定のコマンドを実行するLinux基本コマンドTips(316)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、制限時間を付けて指定のコマンドを実行する「timeout」コマンドです。

» 2019年06月27日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、制限時間を付けて指定のコマンドを実行する「timeout」コマンドです。

timeoutコマンドとは?

 「timeout」は制限時間を付けて指定のコマンドを実行するコマンドです。「timeout 秒数 コマンド」のように、タイムアウトまでの時間を指定して、コマンドを実行します。



timeoutコマンドの書式

timeout [オプション] 時間 コマンド名

※時間のデフォルトは秒。指定できる単位はs(秒)、m(分)、h(時)、d(日)





timeoutの主なオプション

短いオプション 長いオプション 意味
-s シグナル --signal=シグナル タイムアウト時にコマンドに送るシグナルを指定する(デフォルトはTERMシグナル、本文を参照、※1)
-k 追加の時間 --kill-after=追加の時間 最初のタイムアウトでシグナルを送った後、指定した時間を経過してもコマンドが動作している場合はKILLシグナルを送る(本文を参照
--preserve-status タイムアウトを起こした場合も、実行したコマンドと同じステータスコードで終了する(タイムアウト時のデフォルトの終了ステータスは124)
--foreground timeoutをシェルプロンプトから直接実行しない場合、コマンドが端末からシグナルを受信できるようにする

※1 シグナルは番号か「HUP」などの文字で指定。使用できるシグナルは「kill -l」(連載第8回)を参照。





制限時間を付けて指定のコマンドを実行する

 「timeout 時間 コマンド」で、制限時間(タイムアウトまでの時間)を付けてコマンドを実行できます。デフォルトの単位は「秒数」です。小数点も使用できます。単位を指定する場合、「s」(秒)の他、「m」(分)、「h」(時)、「d」(日)を選択できます。

 実行するコマンドを指定する際、そのコマンドのオプションなどを付けることができます。例えば、画面1では、「timeout 10 ping localhost」として、「ping localhost」(第143回)を10秒間だけ実行しています。

 「ping」コマンドはサーバやIPアドレスを指定して応答の有無を調べます。今回は対象を“localhost”、つまり自分自身として、単に“1秒ごとに結果を表示し続けるコマンド”として使用しています(※2)。

※2 pingコマンド自身にも、タイムアウトまでの時間を指定するオプション(-w)や、パケットを送る回数を指定するオプション(-c)がある。



コマンド実行例

timeout 時間 コマンド

(制限時間付きでコマンドを実行する)

timeout 10 ping localhost

(「ping localhost」を実行、10秒経過したら終了する)


画面1 画面1 コマンドを終了する時間を指定して実行したところ


送信するシグナルを指定する

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。