GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでの待機コマンドを実際の例で説明

waitコマンドは、すべてのLinuxディストリビューションで見つけることができるようにLinuxに付属しているものです。プロセスが停止する前に、プロセスが終了するのを待ちます。プロセスIDまたはジョブIDを含める場合は、waitコマンドを使用する必要があります。簡単に言うと、IDを含む待機コマンドは、プロセスが終了して終了ステータスに戻るまで待機し続けます。したがって、waitコマンドも使用する場合は、この記事をよくお読みになることをお勧めします。

待機コマンドとは何ですか?

Linuxのwaitコマンドは、自動化ワークフローの管理について話すときに、価値があり簡単なプロセスであることがわかります。さらに、自動化がスムーズに進むように、フローを正しく設定するのに役立ちます。たとえば、waitコマンドを使用して、次のモジュールが機能を開始する前に、現在のモジュールの実行が終了していることを確認する必要があります。

このコマンドは、前のプロセスを綿密に監視します。前のプロセスが完了すると、ステータスがコマンドに送信されます。したがって、ID 25351のプロセスが完了するのを待っている場合、waitコマンドは完了時に終了ステータスを送信します。その終了ステータスは、戻りメッセージに示されます。待機コマンドの一般的な構文は次のとおりです。

wait [options] ID

ID(PID)–>このオプションを選択した場合、プロセスID(PIDを待機)はユーティリティが終了するまで待機します。次のコマンドを使用して、プロセスのPIDを見つけることができます。

pidof <process name>

たとえば、FirefoxのPIDを見つけて、ターミナルで次のコマンドを実行します。

Linuxでの待機コマンドの実際的な例

---

以下は、それをよりよく理解するのに役立つwaitコマンドの例です。さまざまなシナリオを使用し、それに応じてスクリプトを作成したので、それらを見てみましょう。

1。複数のプロセスでコマンドを待つ

この例では、多数のプロセスで待機コマンドが機能するかどうかを判断します。 2つのコマンドの実行を続行し、それらが実行されるのを待つことができるスクリプトを作成します。次の情報を使用してbashスクリプト「ubuntupit.sh」を作成しました。

#! /bin /bash

echo "wait vlc" &

process_id=$!

echo "wait firefox" &

wait $process_id

echo process 1 ended as $?

echo process 2 ended as $?

上記のスクリプトを作成した後、ターミナルで以下のコマンドを実行しました:

bash ubuntupit.sh

子プロセスを生成するために使用されるシェルスクリプトでwaitコマンドを使用することもできます。簡単なスクリプトは次のとおりです。

#! /bin /bash

vlc &

process_id=$!

echo "PID: $process_id"

wait $process_id

echo "Exit Details: $?"

上記のコマンドの場合:

  • 最初の行はシバンで構成され、2番目の行にはvlc&があり、待機コマンドを使用します。
  • $!は、バックグラウンドで実行される最後のプロセスのPIDを格納するための内部bash変数として機能します。
  • PIDは、次の行の指定された待機コマンドに渡されます。このコマンドは、vlcプレーヤーが閉じるまで待機します。
  • 最後に、システムは待機コマンドの終了の詳細を出力します。

次に、ターミナルで次のスクリプトを実行します。

スクリプトで-nオプションを使用して、別の結果を取得することもできます。 -nオプションで構成されるスクリプト「Ubuntupit2.sh」は次のとおりです。

#! /bin /bash

vlc

firefox

wait -n

echo "First process ended"

wait

echo "All processes ended"

上記のスクリプトの-nオプションは、最初のプロセスが完了するまでechoステートメントの出力を遅らせます。 waitコマンドは、すべてのバックグラウンドプロセスが終了するまで待機します。

2。待機コマンドを使用してプロセスを強制終了します

待機コマンドに関する2番目の例では、ubuntupit3.shという名前のスクリプトを実行してプロセスを終了してから、待機コマンドを実行します。

#! /bin/bash
echo "Kill a Process"
vlc &
process_id=$!
kill $process_id
wait $process_id
echo $process_id is ended successfully.

スクリプトを実行すると、次の出力が表示されます。

ここで、終了ステータスがプロセスが終了したかどうかを示していることがわかります。この例は、プロセスの結果に基づいて、終了ステータスがどのように異なる方法で戻るかを示しています。

3。終了ステータス値の確認

この例では、関数check()関数に2つの引数が必要であることがわかります。スクリプトにubuntupit4.shという名前を付けましょう。このスクリプトでは、sleepコマンドを使用して例を示しています。ここでは次の関数を定義しています:

#! /bin/bash

function check()

{

echo "Execute sleep for $1 seconds"

sleep $1

exit $2

}

check $1 $2 &

b=$!

echo "System is checking the status of the process"

wait $b && echo Ended Successfully || echo Not Ended Successfully

この関数では、最初に最初のプロセスの長さを反映します。次に、特定の情報を使用してスリープし、プロセスを終了します。次の入力を考慮します:

check $1 $2 &

b=$!

echo "System is checking the status of the process"

wait $b && echo Ended Successfully || echo Not Ended Successfully

ユーザーが値を入力した後、waitコマンドを使用してステータスを出力します。ここでは、例として6,5と6,0を使用しました:

最後に、インサイト

上記の記事には、waitコマンド、Linuxでの使用法、および実際の例に関するすべての情報が含まれています。自動化ワークフローでそれをうまく利用する方法を見てきました。この記事で言及されていることはすべて、使用されているコマンドから追加の詳細まで適切に読み取られ、ポイントを見逃すことはありません。


Linux
  1. Linuxのshutdownコマンドを例で説明

  2. Linux Tracerouteコマンド、例を使用して説明

  3. LinuxでのJQコマンドと例

  1. 例を含むwcLinuxコマンド

  2. Linuxカットコマンドを6つの例で説明

  3. Linuxipコマンドと例

  1. Linuxのlddコマンドを例で説明

  2. 15Linuxpsコマンドと例

  3. Linuxはコマンドを例で説明します