개별 작업 번호를 각각 입력하는 대신 동일한 이름을 가진 여러 작업을 삭제할 수 있습니까?
qdel -u username
다른 작업을 해야 하기 때문에 이 옵션을 사용하고 싶지 않습니다 . +100개의 별도 작업이 있으므로 더 빠른 옵션이 있으면 각 작업 번호를 입력하지 않는 것이 좋습니다!
나는 이 옵션을 온라인에서 찾았습니다.
qdel wc_jobname
하지만 오류가 반환됩니다.
qdel: 불법적으로 형성된 작업 식별자: wc_jobname
답변1
작업 이름을 매개변수로 사용하고 존재하는지 확인하는 스크립트를 준비할 수 있습니다... 존재하는 경우 작업을 삭제합니다... 예를 들어 다음 스크립트를 참조로 사용할 수 있습니다.
#!/bin/bash
#check processes in 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 jobs to kill"
else
#if there are jobs, kill and count them to know how many processes have been killed
while read pid
do
kill -9 $pid
i=$((i+1))
done < /tmp/temp.txt
#show how many jobs have been killed
echo "$i jobs killed"
fi
rm /tmp/temp.txt
답변2
이렇게 하면 트릭을 수행할 수 있습니다.
jobs -lr | grep -F something | awk '{print $2}' | xargs kill
-l
프로세스 ID 나열
-r
작업 실행에 대한 제한 사항
답변3
Killall은 지정된 명령을 실행하는 모든 프로세스에 신호를 보냅니다. 신호 이름이 지정되지 않으면 SIGTERM이 전송됩니다.
신호는 이름(예: -HUP 또는 -SIGHUP), 숫자(예: -1) 또는 옵션 -s로 지정할 수 있습니다.
답변4
당신은 이것을 할 수 있습니다 qdel [job_name]
. 예를 들어 작업 이름이 "analytic1" 인 경우 이 작업을 수행합니다 qdel analysis1
. 때로는 -f
so 를 추가해야 할 때도 있습니다 qdel -f analysis1
.