작업 중인 시스템에서 실행 중인 작업을 자주 취소해야 하는 경우가 있습니다. 내 작업을 다음과 같이 확인할 수 있습니다.
$ 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)