提供一种解决方案,自定义集群后台作业取消的函数:
def cancelAllJobs(){
nodes = exec node from pnodeRun(getRecentJobs) where endTime=NULL
jobIds = exec jobId from pnodeRun(getRecentJobs) where endTime=NULL
print("All running jobs number is: "+size(nodes))
if(size(nodes)>0){
for(i in 0..(size(nodes)-1)){
print("Start to cancel the job: "+(i+1))
rpc(nodes[i], cancelJob{jobIds[i]})
print("The job: "+(i+1)+" is canceled, therar are still "+(size(nodes)-i-1)+" jobs is running")
}
}
do{
print("The server is canceling the job, please wait !")
sleep(1000)
}
while((exec count(*) from pnodeRun(getRecentJobs) where endTime=NULL) !=0 )
print("cancel job finished !")
}
然后调用cancelAllJobs函数就可以了。