Articles

Bash Sleepコマンド:スクリプトで使用するためのクイックガイド

通常、スクリプトを高速に実行したいのですが、必ずしもそうではありません。 あり当社バスクリプトを利用sleepコマンドを実行する前に、次のコマンドです。 いつ…

Bash sleepコマンドとは何ですか?

Bash sleepコマンドは、コマンドの実行を所定の時間遅らせます。 スリープ時間は秒単位で表されます。 Sleepコマンドの使用は、X秒ごとにタスクをスケジュールする場合、またはスクリプトが別のスクリプトに依存して実行を完了する場合に一般的です。,

sleepコマンドを使用する三つのシナリオを見てみましょう。

  1. すぐにコマンドを実行するのではなく、将来X秒の実行をスケジュールします。
  2. プログラムはファイルのセットを処理するのに長い時間がかかり、処理が完了するとそれを示すファイルを生成します。 それ以外の場合は、最初のプログラムによって生成されたファイルに基づいてプロセスの次のステップを実行します。,
  3. あなたはプログラムでサードパーティのAPIを呼び出しており、APIが毎分60を超える要求を許可していないことを知っています。 X秒間スリープ状態にすると、APIプロバイダーが許可する毎分のリクエスト数を超えないようにすることができます。li>

はじめましょう!,

BashのSleepコマンドの基本的な構文

Bashのsleepコマンドの基本的な構文は非常に簡単です。

sleep <SECONDS>

コマンドラインで実行するとどうなりますか。

$ sleep 5$ 

この場合、sleep5コマンドを実行した後、Linuxは5秒後にシェルを返します。

そして、次に、Bash sleepコマンドの方法の三つの実用的な例に移りましょう。,

シナリオ1:Bashスクリプト内の別のコマンドの実行を遅らせるSleepコマンド

私は、sleepコマンドの正確な動作を示すために簡単なBashシェルスクリプトを記述します…

…前の例では、sleepコマンドが5秒後にシェルを返したことを実際に示すことができなかったことを考えると、sleepコマンドはシェルを返しました。

私がシナリオ1で説明したことを行うスクリプトを書いてみましょう、それはコマンドの実行をX秒(この場合は5秒)遅らせます。

これは、ジョブスケジューラの同じ原則に従って特定の時間にコマンドを実行するようなものです。,

したがって、delay_cmd.sh:

#!/bin/bash datesleep 5dateuptime 

dateコマンドは、sleepコマンドの前後に現在の日付を印刷するために使用されます。このようにして、スクリプトが5秒間中断されていることがわかります。

5秒後にuptimeコマンドが実行されます。

理にかなっていますか?

理論的には、同じスクリプトを単一行で書くことができます。

#!/bin/bash date; sleep 5; date; uptime 

これは、Linuxではセミコロンが異なるコマンドを分離して順番に実行するために使用されるためです。,

言い換えれば、Linuxは次のコマンドを実行する前に各コマンドが完了していることを確認します。

シナリオ2:Sleepコマンドを使用して別のスクリプトが完了するのを待つBashスクリプト

この例では、二つのスクリプトを作成します。

  1. program_1.sh:30秒間スリープしてから、stage1というファイルを作成します。完了。 これは基本的に、特定のタスクを完了するのに時間がかかるプログラムをシミュレートし、stage1を作成することによって実行の完了を確認します。完全なファイル。
  2. program_2.sh:whileループを使用し、すべての反復でstage1かどうかをチェックします。,完全なファイルが存在する。 それが6秒間スリープしない場合、ファイルが存在する場合は”File stage1.コンプリート 第1ステージが完成し、第2ステージが始まる…”。

ここにありますprogram_1.sh:

#!/bin/bash sleep 30touch stage1.complete 

touchコマンドは、最初のプログラムでstage1を作成するために使用されます。スクリプトが実行された瞬間から30秒後にファイルを完了します。

およびprogram_2.sh 次のとおりです、私たちはそれを実装するためにBash if else文を使用します:

第二のBashシェルスクリプトでは、無限ループを持っています。, 繰り返しごとに、script:

  • はファイルstage1かどうかをチェックします。コンプリートが存在する。
  • ファイルが存在しない場合は6秒間スリープします
  • ファイルが存在する場合はstage1を削除します。ファイルを完了し、Bash exitコマンドを使用して実行を停止します。,

二つのスクリプトを実行する前に、chmod+xコマンドを使用して両方が実行可能であることを確認してください。

chmod +x program_*.sh

だから、スクリプトを実行しましょう…

program_1.shまず、バックグラウンドで実行して、program_2.shその直後に実行できるようにします。同じ端末:

期待どおり、第二のスクリプトは6秒間スリープし続け、ファイルstage1が見つかるまでスリープし続けます。完全なファイル、そしてそれはそれを実行を停止します。,

シナリオ3:SleepサードパーティのAPIへの呼び出し数を制御するコマンド

Bashスクリプトを使用してAPIを呼び出す場合は、curlコマンドを使用できます。

curlを使用してAPIを呼び出すのは簡単です。

https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22 

curlを使用してGETリクエストを実行し、sleepコマンドを使用して一定期間内のAPI呼び出し数を制限するBashスクリプトを記述します。

これは、APIプロバイダによって課される潜在的な制限を超えないようにするために行われます。,

これは私が書いたスクリプトです:

このスクリプトについてのいくつかのこと:

  • COUNTER変数は、whileループから終了する前に実行されるAPI呼び出しの数
  • cURLは、APIエンドポイントに対してGET要求を実行するために使用されます。
  • whileループの繰り返しごとに、sleepコマンドを使用してスクリプトを10秒間中断し、API呼び出しの数を10秒ごとに制限します。
  • 算術演算子$(())を使用してカウンタ変数をインクリメントします。,

だから、スクリプトを実行します。

期待どおりに二つのAPI呼び出しが実行され、変数COUNTERの値が3であるためwhileループの実行が停止します。

結論

Bashスクリプトでsleepコマンドを使用するさまざまな方法を示しました。

そして、その過程で私はさまざまなことをたくさんカバーしました:

  • バックグラウンドでスクリプトを実行しています。
  • 算術演算子を使用します。
  • 無限のwhileループ。
  • カウンタ変数。
  • curlを使用してAPIを呼び出します。
  • ファイルを作成および削除します。,
  • Bashスクリプトの実行可能権限を設定します。
  • セミコロンを使用してコマンドを順番に実行します。li>

私はそれがすべて理にかなっていることを願っています!

そして、あなたは? Bashでsleepコマンドを他にどのように使用しますか?

関連する無料コース:Bashスクリプトを解読する