Windows PowerShell でのバックグラウンドジョブ ~ その2 ジョブ完了の待機とジョブの停止~

今回は、実行したバックグランドジョブの完了を待機する方法と、ジョブを停止する方法についてです。

について説明します。


ジョブ完了の待機

前回の記事では、バックグラウンドでジョブを実行すると、すぐに次のコマンドを実行できることについて説明しました。

Wait-Jobコマンドレットを使用すれば、バックグラウンドジョブの実行完了を待ってから、コマンドプロンプトを表示させることができます。

PS> Wait-Job

Wait-Jobコマンドレットの使い道としては、他のコマンドとの同期を取る場合、時間のかかるコマンドの打ち切りなどが考えられます。

Wait-Jobコマンドレットにはいろいろなパラメータがあります。いくつかの例とともに使い方を見てみましょう。

まずは、一定時間待機する例です。

一定時間待機するには-Timeoutパラメータを使用して、最大待ち時間(秒)を指定します。

もしも、最大待機時間待ってもコマンドが完了しない場合は、待機を終了してコマンドプロンプトを表示して、バックグラウンドジョブを実行し続けます。

下記は、IDが1のジョブを60秒間待機します。IDの確認方法は前回の記事を参照ください。

PS> Wait-Job -ID 1 -Timeout 60

 

次に、-Anyパラメータについてです。

-Anyパラメータを指定すると、複数指定したバックグラウンドジョブのうち、いずれかが完了するとコマンドプロンプトを表示します。

下記は、IDが1,3,5のいずれかのバックグランドジョブが完了した時点でコマンドプロンプトが表示されます。

終了してないジョブは引き続き実行されます。

PS> Wait-Job -ID 1, 3, 5 -Any

ジョブの停止

次にバックグランドジョブを停止する方法について見てみましょう。

バックグラウンドジョブを停止するにはStop-Jobコマンドレットを使用します。

まずはIDを指定してジョブを停止させる方法です。

この場合は、下記のように-IDパラメータを使用して、停止したいジョブを指定します。

PS> Stop-Job -ID 1,3

 

次に-Stateパラメータを使用して、コマンドの実行状況によってジョブを停止させる方法を見てみましょう。

-Stateパラメータには、NotStarted、Running、Completed、Stopped、Failed, Blocked を指定できます。

たとえば、下記のコマンドは-StateにRunningを指定することにより、実行中のジョブをすべて停止させます。

PS> Stop-Job -State Running

コメント

タイトルとURLをコピーしました