背景: 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里面的任务。