내 클러스터에서 여러 작업을 실행하고 있지만 작업 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