Ansible non-zero return code 错误(ps -ef kill)

        你是否遇到了在用ansible shell执行远端脚本时报出了non-zero return code的错误?我的远端shell脚本中包含下面一行代码去杀进程:

ps -ef|grep patrolTask|grep -v "patrolTaskTimer\|grep"|awk '{print $2}'|xargs kill -9

        网上有很多什么加啥cat呀都没能解决我的问题,只有一篇文章说在grep中过滤deploy/monitor/start进程可以解决问题,这篇文档给我的启发是:我在kill -9杀目标进程时,执行了自杀,把ansible在远端机器的部署进程给杀了,然后管理端ansible进程无法接收到远端部署进程的正确回复,所以就报出了non-zero return code的错误。

        于是我就先把上面代码的 "|xargs kill -9" 先屏蔽的,还真打印出了ansible的部署进程,因为ansible中部署进程执行的脚本路径也包含了 "patrolTask" 关键字,还真执行了自杀!我的ansible执行shell命令是:

ansible patrolTask -m shell -a "source /etc/profile;/app/patrolTask/startup.sh"

解决办法,给ansible执行的命令加一个关键字 "ansibleDeployProcess":

ansible patrolTask -m shell -a "source /etc/profile;/app/patrolTask/startup.sh ansibleDeployProcess"

然后给远程shell脚本在kill时过滤掉这个关键字:

ps -ef|grep patrolTask|grep -v "patrolTaskTimer\|grep\|ansibleDeployProcess"|awk '{print $2}'|xargs kill -9

问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值