작업 이름을 기준으로 여러 작업을 취소하는 방법

작업 이름을 기준으로 여러 작업을 취소하는 방법

내 클러스터에서 여러 작업을 실행하고 있지만 작업 ID 대신 이름을 기준으로 여러 작업을 취소하고 싶습니다. slurm 문서를 읽고 scancel -n jobname을 사용하여 취소할 수 있다는 것을 알았는데 하나씩 삭제하는 대신 일괄 삭제하고 싶습니다. slurm 작업 화면의 작업명은 다음과 같습니다.

spc_2.30
spc_3.20 
spc_3.10 
spc_3.00 
spc_2.40
spc_3.30      
spc_3.20              
spc_3.10  
spc_2.50  
spc_3.40  
      

이런 경우, 이 이름을 토대로 작업을 취소하는 방법을 제안할 수 있는 사람이 있나요?

답변1

재사용이 가능하도록 두 단계로 진행하겠습니다.필터링된 목록을 얻으려면 아래 옵션 1을 참조하세요.scancel, 그런 다음 명령 에 입력하거나 완전히 테스트되지 않은 다른 옵션 중에서 신속하고 지저분하게 수행하고 내 스크립트를 공유합니다.

옵션 1: cancl 스크립트를 작성하여 작업을 필터링하고 다음과 같이 보냅니다.srun


#!/bin/bash

#check processes in some mode, for e.g. standby, which matches with our process name
ps T |grep $1 |grep -v 'grep' |grep -v $0 |awk '{print $1}' > /tmp/temp.txt

i=0
if [ $(cat /tmp/temp.txt |wc -l) -eq 0 ];
then
        echo "there are no slurm jobs to kill"
else
#if there are slurm jobs, kill and count them to know how many processes have been killed
while read pid
do
        #scancel <jobid> use this to cancel each job iteratively in blocking mode
        scancel $pid
        echo "Slurm job, $pid killed \n"
        i=$((i+1))
done < /tmp/temp.txt
#show how many Slurm jobs have been killed
echo "$i Slurm jobs killed"
fi
rm /tmp/temp.txt

옵션 2 예


너는 일을 취소할 수 있어$ scancel jobinXX

옵션 3 예


노드, 상태 및

squeue --me --nodelist=awsEC200n37a,awsEC200n37b  --states=RUNNING,PENDING --Format=jobid,name --noheader | grep augcl | awk '{print $1}'  | xargs scancel

관련 정보