背景: hive工作中,将很多etl 脚本写在一起,然后整体提交,提交后突然后悔想取消

 

 

eg:

 

qyjssum.sh:

 

sudo -u hdfs hive -e "

    use ste_qyjs;

 

    清洗逻辑1.....

 

 

    清洗逻辑2....

 

    清洗逻辑3......

 

"

 

调用写法:

nohup /cloud/qyjs_sum_generate.sh > /cloud/qyjs_sum_generate.log  2>&1 &

tail -f  /cloud/qyjs_sum_generate.log 

 

一般想杀死用:

 

ps  -ef | grep qyjs_sum_generate.sh

此时会出现三个进程描述信息和ID,

第一个是 grep这条语句的进程

第二个是上面 nohup调用grep qyjs_sum_generate.sh 的进程

第三个是这个任务提交成mr任务的进程

一般直 kill -9 第二个 第三个进程即可,

 

但是昨天我用这种方式杀不死,现象是:

   清洗逻辑1.....  

 

 

    清洗逻辑2....

 

    清洗逻辑3......

 

杀死了这个进程后,  清洗逻辑2的进程提交上去,然后杀死清洗逻辑2的 清洗逻辑3的有提交上去,

具体原因我不知道,但是最后的做法就是:

 

hadoop job -list 查看产生的 hadoop job

然后用 hadoop job -kill jobid方式 出现一个杀死一个 这种方式实现完全杀死整个sh里面的任务。