ID以外のジョブ名でジョブをキャンセルできますか?

ID以外のジョブ名でジョブをキャンセルできますか?

個々のジョブ番号をそれぞれ入力するのではなく、同じ名前の複数のジョブを削除できますか?

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。時には-fsoを追加する必要がありますqdel -f analysis1

関連情報