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

LinuxのWaitコマンドを例で説明

待つ コマンドはLinuxに組み込まれています。したがって、どのLinuxディストリビューションでも見つけることができます。実行中のプロセスが完了するまで待機するために使用されます。これを機能させるには、ジョブIDまたはプロセスIDで使用する必要があります。

一言で言えば、待つ 指定されたジョブIDまたはプロセスIDを持つコマンドは、プロセスが完了するのを待って、終了ステータスを返します。

待つ 自動化ワークフローの管理に関しては、コマンドが便利です。自動化が成功するように、フローを正しく設定するのに役立ちます。たとえば、自動化プロセスでは、次のモジュールを有効にする前に、特定のモジュールの実行を終了する必要があります。待機コマンドを使用すると、それを実行できます。

waitの動作 コマンド

このコマンドは、前のプロセスを監視します。前のプロセスがステータスを返すと、終了ステータスを送信します。したがって、ID 25351のプロセスが完了するのを待っている場合、waitコマンドはその完了を待ってから終了ステータスを送信します。戻りメッセージには、プロセスの終了ステータスが含まれます。

一般的な構文:

wait [Processid] [jobid]
  • プロセスID–>プロセスID(PID待機)を使用する場合、ユーティリティの終了を待機します
  • ジョブID–>この場合、選択したバックグラウンドプロセスを待機します。現在のシェル実行環境でのみ機能します。

プロセスが突然終了した場合、exitコマンドは128を超える値を超えるように設定されます。したがって、128を超える量が表示された場合、これはプロセスが意図したとおりに機能しなかったことを意味します。

成功の終了ステータスは0に設定されます。これは、現在のシェルで子プロセスが実行されていない状態でプロセスが正常に終了した場合にのみ発生します。ただし、終了ステータスとして0を受け取らない場合は、エラーがあることを意味します。 1から126までの値で通知されます。また、終了ステータスが127の場合は、プロセスIDが不明であることを意味します。

実例

理解を深めるために、以下の実用的な例をいくつか見ていきましょう。

待つ 複数のプロセスを持つコマンド

この例では、待機がどのように行われるかを確認します。 コマンドはさまざまなプロセスで機能します。 2つのコマンドを実行して、それらを待つスクリプトを作成します。

スクリプトにmultiple.shという名前を付けます 。以下はそのコードです。

#!/bin/bash
echo "testing the wait command instance 1" &
process_id=$!
echo "testing the wait command instance 2" &
wait $process_id
echo Job 1 is completed and exited with status $?
echo Job 2 is completed and existed with status $?

上記は、waitコマンドを使用したスクリプトの例でもあります。また、ステータスを返します。理解を深めるために、スクリプトを1行ずつ見ていきましょう。最初の行では、スクリプトの実行に使用するbashをインポートします。

次に、waitコマンドをテストしていることをシェルにエコーします。最初のプロセスのプロセスIDを$process_id変数に格納します。ここで、最初のプロセスが実行されるのを待ちます。完了すると、最初のプロセスが完了したことを出力し、ステータスを「$?」で出力します

また、2番目の待機コマンドが「$!」とともに使用されていることがわかります。これは、waitコマンドで2番目のプロセスIDを使用することを意味します。

最終的に、両方のプロセスが完全に実行され、終了ステータス0が返されます。

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

2番目の例では、プロセスを強制終了してから、 waitを使用します。 指図。スクリプトにkillandwait.sh。という名前を付けましょう。

#! /bin/bash
echo "Killing process and using wait command"
sleep 10 &
procc_id=$!
kill $procc_id
wait $procc_id
echo $procc_id is terminate

上記のスクリプトを実行すると、次の出力が得られます。

ご覧のとおり、その終了ステータスは異なり、プロセスが終了すると読み取られます。この例は、プロセスの運命に応じて、コマンドがどのように異なる終了ステータスを返すかを示しています。

終了ステータス値の確認

最後の例では、 check()を使用するスクリプトを実行します。 働き。 check() 関数は2つの引数を取ります。スクリプトをwaitandcheck.shと呼びましょう 。

ここで関数を定義します:

function check()
{
echo "Let's sleep for $1 seconds"
sleep $1
exit $2
}

可能な限り、この関数は最初に最初のプロセスがスリープする時間をエコーし​​、次にそれらを使用してスリープしてプロセスを終了します。以下の行を使用して入力を行います:

check $1 $2 &
b=$!
echo "checking the status"
wait $b && echo FINE || echo NOT FINE

上記の行では、ユーザーからの入力を受け取り、待機を使用してステータスを出力します。 コマンド。

結論

待つは以上です Linuxでのコマンドの使用法。あなたが経験したように、それは自動化ワークフローでうまく利用することができます。コマンドをどのように使用しますか?この記事で説明されている以外の用途を見つけましたか?読者とあなたの考えを共有してください。


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

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

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

  1. 例を使用したBash待機コマンド

  2. 例を含むwcLinuxコマンド

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

  1. Linuxipコマンドと例

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

  3. 15Linuxpsコマンドと例