タイムアウトコード> は、指定されたコマンドを実行し、指定された時間が経過しても実行されている場合にコマンドを終了するコマンドラインユーティリティです。つまり、 timeout 時間制限付きでコマンドを実行できます。 タイムアウト コマンドはGNUコアユーティリティパッケージの一部であり、ほとんどすべてのLinuxディストリビューションにインストールされています。
タイムアウトオプションが組み込まれていないコマンドを実行する場合に便利です。
この記事では、Linuxの timeoutの使用方法について説明します。 コマンド。
タイムアウトの使用方法 コマンド#
timeoutの構文 コマンドは次のとおりです:
timeout [OPTIONS] DURATION COMMAND [ARG]…
DURATION 正の整数または浮動小数点数の後に、オプションの単位接尾辞を付けることができます:
-
s-秒(デフォルト) -
m-分 -
h-時間 -
d-日
単位を使用しない場合、デフォルトで秒になります。期間がゼロに設定されている場合、関連するタイムアウトは無効になります。
コマンドオプションは、引数の前に指定する必要があります。
timeoutの使用方法を示すいくつかの基本的な例を次に示します。 コマンド:
-
5秒後にコマンドを終了します:
timeout 5 ping 8.8.8.8 -
5分後にコマンドを終了します:
timeout 5m ping 8.8.8.8 -
1分6秒後にコマンドを終了します:
timeout 1.1m ping 8.8.8.8
tcpdumpなどの昇格された特権を必要とするコマンドを実行する場合 、 sudoを先頭に追加 タイムアウトの前 :
sudo timeout 300 tcpdump -n -w data.pcap
シグナルが与えられない場合、 timeout SIGTERMを送信します 制限時間に達すると、管理対象コマンドに信号を送ります。 -s を使用して、送信する信号を指定できます (-signal )オプション。
たとえば、 SIGKILLを送信するには pingに 1分後にコマンドを実行するには、次を使用します:
sudo timeout -s SIGKILL ping 8.8.8.8
SIGKILLなどの名前で信号を指定できます 、または 9のような番号 。次のコマンドは前のコマンドと同じです:
sudo timeout -s 9 ping 8.8.8.8
使用可能なすべてのシグナルのリストを取得するには、 kill -lを使用します コマンド:
kill -l スタックしたプロセスを強制終了する#
SIGTERM 、制限時間を超えたときに送信されるデフォルトのシグナルは、一部のプロセスによってキャッチまたは無視される可能性があります。このような状況では、終了信号が送信された後もプロセスは実行され続けます。
監視対象のコマンドが強制終了されるようにするには、 -kを使用します (-kill-after )オプションの後に期間が続きます。指定された制限時間に達した後にこのオプションを使用すると、 timeout コマンドはSIGKILLを送信します キャッチまたは無視できない管理対象プログラムへのシグナル。
次の例では、 timeout コマンドを1分間実行し、コマンドが終了していない場合は、10秒後にコマンドを強制終了します:
sudo timeout -k 10 1m ping 8.8.8.8 タイムアウト-k“ ./test.sh”
与えられた制限時間に達した後に殺された
終了ステータスの保持#
タイムアウトコード> 124を返します 制限時間に達したとき。それ以外の場合は、管理対象コマンドの終了ステータスを返します。
制限時間に達した場合でもコマンドの終了ステータスを返すには、-preserve-statusを使用します オプション:
timeout --preserve-status 5 ping 8.8.8.8 フォアグラウンドで実行#
デフォルトでは、 timeout 管理対象コマンドをバックグラウンドで実行します。コマンドをフォアグラウンドで実行する場合は、-foregroundを使用します オプション:
timeout --foreground 5m ./script.sh このオプションは、ユーザー入力が必要なインタラクティブコマンドを実行する場合に便利です。
結論#
タイムアウト コマンドは、制限時間内に特定のコマンドを実行するために使用されます。
タイムアウトコード> は多くのオプションがない単純なコマンドです。通常、 timeoutを呼び出します 期間と管理対象コマンドの2つの引数のみ。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。