ジョブ名(CentOS)を使用してクラスタでジョブが実行されていることを確認する方法

ジョブ名(CentOS)を使用してクラスタでジョブが実行されていることを確認する方法

複数のジョブを送信するためにbashスクリプトを実行しています。ジョブはまだ実行されていない場合にのみ送信されます。 bashスクリプトでifステートメントを使用して、「job123」がすでに実行中かキューに入っているかを簡単に確認したいと思います。

qstatとqstatusに対して別のオプションを試しましたが、ジョブ名で解決できないようです。この情報を検索するには?また、これらの出力は単なる文字列であるため、grepを使ったことはありませんが、特定のコマンドが必要であると思います。

答え1

Sun / Oracle Grid Engineのqstatユーティリティを使用すると、ユーザーとジョブIDでジョブをフィルタリングできます。役職ごとにフィルタリングする必要がある場合は、grep次のことを行う必要があります。

qstat -u $USER | grep -w jobname

if- ドアに使用される:

if qstat -u $USER | grep -q -w "$jobname"; then
  # job is in the queue
else
  # job is not in the queue
fi

私もインターネットで少し探してみました一部バージョンqstat 現れるスイッチを使用してジョブ-j名でフィルタリングする機能:

qstat -u $USER -j "$jobname"

これが機能していることを確認できません。その他のバージョンこのユーティリティは明らかにそうすることはできません(サポートもありません-u)。

答え2

解決できるようになりました。

qstat -r | grep -cw "ジョブ名"

ifステートメントで使用できる0または1を提供します。これは私にとってハッキングのようです。 -r はジョブのフルネームを表示するので重要です。

関連情報