Linuxでコマンドを実行するときに、設定した時間だけコマンドを実行したい場合があります。コマンドラインユーティリティがあります-タイムアウト -これはこの目的のために特別に開発されたものです。この記事では、わかりやすい例を使用して、このコマンドの基本について説明します。
ただし、その前に、このチュートリアルのすべての例がUbuntu18.04LTSマシンでテストされていることを言及する価値があります。
Linuxタイムアウトコマンド
名前が示すように、Linuxのtimeoutコマンドを使用すると、時間制限付きでコマンドを実行できます。その構文は次のとおりです。
timeout [OPTION] DURATION COMMAND [ARG] ...
そして、ツールのマニュアルページで説明されているのは次のとおりです。
timeout-制限時間内にコマンドを実行します
COMMANDを開始し、DURATION後も実行されている場合はコマンドを強制終了します
以下は、このツールがどのように機能するかをよりよく理解するためのQ&Aスタイルの例です。
Q1。タイムアウトコマンドの使い方は?
基本的な使用法は非常に簡単です。入力にタイムアウト値(秒単位で考慮)と実行するコマンドを指定して、「timeout」を実行するだけです。
たとえば、5秒後にpingコマンドをタイムアウトする場合、この場合のタイムアウトの使用方法は次のとおりです。
timeout 5 ping google.com
Q2。コマンドの終了ステータスを出力で取得するにはどうすればよいですか?
デフォルトでは、timeoutコマンドが成功すると、終了ステータスとして124が返されます。次に例を示します。
最初のケースでは、timeoutコマンドを正常に実行しました。ご覧のとおり、終了ステータスは124でした。ただし、2回目の実行では、Ctrl + Cを使用してコマンドを強制的に強制終了しました。この場合、終了ステータスです。 0でした。
ただし、タイムアウトが正常に実行された場合でもタイムアウトで入力コマンドのステータスを返す場合は、-preserve-statusコマンドラインオプションを使用する必要があります。
例:
timeout --preserve-status 5 ping google.com
Q3。信号タイムアウト送信を変更するにはどうすればよいですか?
入力コマンドに信号を送信してタイムアウトが機能し、入力コマンドが期限が近づくまでに実行を停止することを推測しても意味がありません。デフォルトでは、SIGTERM
コマンドによって使用されます。
ただし、必要に応じて、タイムアウトによって送信される信号を変更できます。このためには、-sコマンドラインオプションを使用し、タイムアウトで送信する信号を入力として指定する必要があります。
例:
timeout -s SIGKILL [COMMAND]
送信できる使用可能な信号のリストを取得するには、次のコマンドを実行します。
kill -l </ pre>Q4。タイムアウトでKILLシグナルを自動的に送信するにはどうすればよいですか?
タイムアウトによって初期信号が送信された後も実行を継続する入力コマンドが発生する場合があります。このような場合、タイムアウトにはオプション「--kill-after」があります。
マニュアルページで説明されている方法は次のとおりです。
-k、--kill-after =DURATION>
COMMANDがまだ実行されている場合は、KILLシグナルも送信します
最初のシグナルが送信されてからかなり経ちますご覧のとおり、このシグナルが送信される時間の後にタイムアウトに通知する期間を指定する必要があります。
結論 実行する作業の種類によっては、timeoutコマンドが非常に便利なツールになる場合があります。ここで、このチュートリアルでは、このユーティリティが提供するオプションの大部分について説明しました。これらの練習が終わったら、manページにアクセスしてタイムアウトについて詳しく知ることができます。
Linux