個々のジョブ番号をそれぞれ入力するのではなく、同じ名前の複数のジョブを削除できますか?
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
。