디버그 시간 제한이 있는 SLURM 작업 스크립트를 많이 제출했습니다(실제 실행 시간을 변경하는 것을 잊어버렸습니다). 이제 모두 동시에 제출되므로 모두 작업 ID 197xxxxx로 시작됩니다. 이제 할 수 있어요
squeue -u $USER | grep 197 | awk '{print $1}'
삭제하려는 작업 ID를 인쇄하세요. 하지만 이 모든 ID에 대해 어떻게 scancel 명령을 사용할 수 있습니까? 위 쉘 명령의 출력은 다음과 같습니다
19726664
19726663
19726662
19726661
19726660
19726659
19726658
19726657
19726656
19726655
19726654
19726653
19726652
19726651
19726650
답변1
squeue -u $USER | grep ^197 | awk '{print $1}' | xargs -n 1 scancel
자세한 내용은 설명서를 확인하세요 xargs
. 여러 작업 ID가 허용되는 경우 (받아야 함) 이 부분을 scancel
생략할 수 있습니다 .-n 1
답변2
모든 slurm 작업을 억제하기 위해(OP 생략 grep 197
) 열 헤더가 포함된 스큐 출력의 첫 번째 줄을 잘라야 한다는 것을 알았습니다.
squeue -u $USER | awk '{print $1}' | tail -n+2 | xargs scancel
답변3
이것이 내가 일반적으로 사용하는 것입니다:
내 작업을 모두 취소합니다.
scancel -u <my_user_name>
필터링하여 취소합니다. 즉, jobId가 26699로 시작하는 모든 작업을 취소합니다.
squeue --format="%.18i" --me -h | grep -w 26699.* | xargs scancel
답변4
이는 단순화된 솔루션이므로 다음과 같이 수행할 수도 있습니다.
squeue -u $USER -h | awk '{print $1}' | xargs scancel
이렇게 하면 형식 지정 옵션이 생략되고 대신 -h
플래그가 있는 헤더가 제거됩니다.