コマンドtimeout は、指定されたコマンドを実行し、一定期間経過しても実行されている場合にコマンドを停止するコマンドラインユーティリティです。つまり、コマンド timeout 指定したタイムアウトでコマンドを実行できます。コマンドtimeout は、ほぼすべてのLinuxディストリビューションにインストールされているコアGNUユーティリティパッケージの一部です。
このコマンドは、タイムアウトオプションが組み込まれていないコマンドを実行する場合、または一定時間実行した後にプロセスを停止する場合に役立ちます。
この記事では、コマンド timeoutの使用方法について説明します。 Linuxターミナルで。
タイムアウトコマンドの使用方法
タイムアウトコマンドの構文は次のとおりです。
タイムアウト[オプション]期間コマンド[ARG]…
DURATION 正の整数または浮動小数点数の後に、オプションの単位接尾辞を付けることができます:
-
s–秒(秒)(これはデフォルトのオプションです) -
m–分(分) -
h–時間(時間) -
d–日(日)
単位が使用されていない場合、デフォルトは秒です。期間がゼロに設定されている場合、関連するタイムアウトは無効になります。
引数の前にコマンドオプションを指定する必要があります。
コマンドtimeoutの使用方法を示すいくつかの基本的な例を次に示します。 :
- コマンド
pingを停止します 5秒後::timeout5 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を追加します コマンドの前timeout :
sudo timeout 300 tcpdump -n -w data.pcap
特定の信号の送信
信号が与えられていない場合は、 timeout タイムアウトに達すると、指定されたコマンドに対してSIGTERMシグナルを使用します。 -s を使用して、使用するシグナルを指定できます (-シグナルコード> )オプション。
たとえば、 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 </ pre>スタックしたプロセスを強制終了します
SIGTERM、タイムアウトを超えたときに送信されるデフォルトのシグナルは、一部のプロセスによってキャッチまたは無視される場合があります。その場合、終了信号が送信された後もプロセスは実行され続けます。監視対象のコマンドが停止したことを確認するには、オプション
-kを使用します (-kill-after)その後に期間が続きます。指定されたタイムアウトに達した後にこのオプションを使用すると、コマンドtimeoutシグナルを送信しますSIGKILLユーザーの入力に対応するプログラムに。次の例では、
timeoutコマンドを1分間実行し、終了しない場合は、10秒後にプログラムを「強制終了」します。sudo timeout -k 10 1m ping 8.8.8.8timeout -k“ ./test.sh”プロセスは、指定された制限時間に達した後、スタックしていても強制終了されます。
終了ステータスの維持
タイムアウトコード>124を返します 制限時間に達したとき。それ以外の場合、コマンドtimeout管理対象コマンドの終了ステータスを返します。タイムアウトに達した場合でもコマンドの終了ステータスを返すには、オプション
-preserve-statusを使用します。 :timeout --preserve-status 5 ping 8.8.8.8フォアグラウンドでのコマンドの実行
デフォルトでは、
timeoutバックグラウンドでコマンドを実行します。フォアグラウンドでコマンドを実行する場合は、オプション-foregroundを使用します。 :timeout --foreground 5m ./script.shこのオプションは、ユーザー入力が必要なインタラクティブコマンドを実行する場合に便利です。
結論
コマンドは
timeoutです ユーザーの意志に応じた制限時間で特定のコマンドを実行するために使用されます。コマンド
timeout多くのオプションがない単純なコマンドです。通常、コマンドtimeoutを使用します 期間と発生するコマンドの2つの引数のみを使用します。
Linux