lsfで多くのbjobが実行されており、ジョブにはRUNとPENDという2つの状態があります。 PEND状態のすべてのbjobを終了したいと思います。スクリプトを使用してこれをどのように実行できますか?私の考えにハードコーディングされたアプローチは、ファイルに保存して各行を解析してステータスとキーを取得することです。 STATがPENDの場合、キーはに渡されますbkill $key
。しかし、これは非常に複雑です。このタスクを直接実行したり、ハードコードされていない方法で特定の状態または名前のタスクを終了したりできるbkill関数はありますか?
ベストアンサー1
bjobs
保留中のジョブのみをリストできます-p
。すべてのユーザーに対して保留中のジョブを削除するジョブをフィルタリングすることも可能であればbkill -p
よいでしょうbkill -p 0
。
私が考えることができる最も良いのはシェル魔法です。完璧ではありませんが、多くの状況に対処する必要があります。例えば、
bkill `bjobs -p -o id -noheader | tr '\n' ' '`
bjobs -p -o id -noheader
ユーザーの保留中のジョブのジョブIDをリストします。tr
予想される形式に変換されますbkill
。 1つの潜在的な問題は、タスクリストが長すぎると、最大コマンドライン長または最大コマンドライン引数の数を超えて、bashが苦情を表示することです。
ここには小さな競争条件があります。ジョブはクエリ間で開始および終了できます。