[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

23.6 timeout: タイムリミット付きでコマンドを実行する

timeout は渡されたコマンドを実行し、 指定された時間が経過してもまだ実行が続いていたら、そのコマンドを終了させる。

書式:

 
timeout [option] duration command [arg]…

command は、シェルの組み込みコマンドであってはならない (see section 特殊ビルトイン・ユーティリティ)。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション. オプションはオペランドの前に置かなければならない。

--preserve-status

タイムアウトしたときに、タイムアウトであることを示す timeout コマンドの終了ステータスではなく、timeout が管理している command の終了ステータスを返す。このオプションは、管理される command が無期限の続行時間をサポートしている場合に役に立つ。

--foreground

独立したバックグラウンドのプログラム・グループを作成しない。 その結果、timeout に管理される command が、フォアグラウンドの TTY を通常どおり使用できるようになる。 対話的シェルから直接実行されないコマンドの時間制限をきちんと行うには (訳注: 言い換えれば、timeout コマンドをシェルスクリプト中で使用する場合には)、 この動作が必要になることがあり、次の二つの場合がそれに当たる。

  1. command が対話的であり、たとえば端末からの読み込みが必要な場合。
  2. 端末から直接 command にシグナルを送ることができるようにしたい場合。 (たとえば、Ctrl-C を送るとか)。

気をつけていただきたいが、この動作モードでは、command の子プロセスは、いかなるものもタイムアウトすることがない。 また、SIGCONT シグナルが command に送られることもない。 フォアグラウンドプロセスでは、そういったことは普通必要がないからであり、 また、(たとえば、GDB のような) それ自身が他のプログラムを監視するモニターであるプログラムでは、 断続的なシグナル送出を起こしかねないからである。

-k duration
--kill-after=duration

ここで指定した duration の経過後に、改めて ‘KILL’ シグナルを送り付けて、 監視対象の command を確実に終了させる。 このオプションを付けないと、選択したシグナルに command を終了させる力がなかった場合に、timeoutcommand を殺すことができない。

-s signal
--signal=signal

制限時間が来たとき、デフォルトの ‘TERM’ シグナルではなく、指定した signalcommand に送る。signal は ‘HUP’ のような名前でもよく、番号でもよい。See section シグナルの指定.

duration は浮動小数点数であり、後ろに単位を付けることもできる。

 
s’ 何秒 (デフォルト)
‘m’ 何分
‘h’ 何時間
‘d’ 何日

duration が 0 だと、対象となるコマンドが時間切れなしになる。 実際の制限時間は、システムの制約を受けることに注意していただきたい。 秒以下の制限時間を指定するときは、とりわけそれを考慮に入れるべきである。

終了ステータス:

 
124: command がタイムアウトした。
125: timeout そのものの実行に失敗した。 
126: command は見つかったが、起動できなかった。
127: command が見つからなかった。
137: command に KILL(9) シグナルを送った (128+9)
それ以外は、command の終了ステータス。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.