複数のジョブを送信するために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 はジョブのフルネームを表示するので重要です。