
コマンド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