쉘 명령 출력에서 ​​모든 SLURM 작업을 취소하는 가장 좋은 방법

쉘 명령 출력에서 ​​모든 SLURM 작업을 취소하는 가장 좋은 방법

디버그 시간 제한이 있는 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

이것이 내가 일반적으로 사용하는 것입니다:

  1. 내 작업을 모두 취소합니다.

    scancel -u <my_user_name>
    
  2. 필터링하여 취소합니다. 즉, jobId가 26699로 시작하는 모든 작업을 취소합니다.

    squeue --format="%.18i" --me -h | grep -w 26699.* | xargs scancel
    

답변4

이는 단순화된 솔루션이므로 다음과 같이 수행할 수도 있습니다.

squeue -u $USER -h | awk '{print $1}' | xargs scancel

이렇게 하면 형식 지정 옵션이 생략되고 대신 -h플래그가 있는 헤더가 제거됩니다.

관련 정보