作業中のシステムで実行されているジョブを頻繁にキャンセルする必要がある場合があります。私の仕事は次のように確認できます。
$ showq|grep jquick
2001744 jquick Running 120 00:08:26 Mon Apr 11 11:06:02
2002020 jquick Running 120 00:22:04 Mon Apr 11 11:19:40
2003328 jquick Running 240 1:43:34 Mon Apr 11 12:41:10
2006300 jquick Running 120 4:59:16 Mon Apr 11 15:56:52
2006312 jquick Running 120 4:59:16 Mon Apr 11 15:56:52
今私がやっていることは、各ジョブIDを手動でキャンセルすることです$ canceljob 2001744 2002020 2003328 2006300 2006312
。
ジョブIDを直接パイプラインに接続するためにこの出力をフィルタリングするにはどうすればよいですかcanceljob
?
答え1
努力する
showq | awk '/jquick/ { printf "canceljob %d\n",$1}'
可能であれば bash にパイプするか
showq | awk '/jquick/ { print $1}' | xargs canceljob
答え2
awkは、スペースで区切られた列を解析するのに優れています。
canceljob $(showq | awk '$2 == "jquick" {print $1}')
またはもっと直接
showq | awk '$2 == "jquick" {system("canceljob " + $1)}'
または、制約を次に渡します。showq
必要なタスクのみを報告するようにします。
canceljob $(showq -w user=jquick)