您的位置:首页 > 运维架构 > Shell

jenkins执行shell脚本,找不到环境变量

2017-10-19 00:00 686 查看
摘要: jenkins编译并发布项目成功后,需要重启一些服务,如果重启过程中使用shell脚本,而脚本中又用到了环境变量,此时可能出现加载环境变量失败的问题

问题如摘要描述;问题原因分析参考 jenkins找不到环境变量

解决方案:在需要执行的脚本前加上 /bin/bash -l 使当前登陆用户以登陆模式执行脚本文件

案例:/bin/bash -l /opt/tomcat/tomcat1601/restart1601.sh

restart1601.sh中的一个坑

启动tomcat需要先找到tomcat pid 杀掉进程再启动,刚开始写了一个脚本在本机执行可以,但是在jenkins中执行就直接失败了 原因是杀进程的时候把grep自己也杀掉了,然后ssh断开连接

可用的脚本如下

restart1601.sh

#!/bin/bash
#echo "stop tomcat1601..."
rm -rf /opt/tomcat/tomcat1601/webapps/sinterface
ps -ef|grep tomcat1601|grep "java"|awk  '{print "kill -9 " $2}' |sh
#echo "kill tomcat1601"
/bin/bash /opt/tomcat/tomcat1601/bin/startup.sh
#echo "start up tomcat1601..."

补充问题:

当发布后 拷贝新的war包到tomcat/webapps下 重启tomcat之前需要将原来解压的项目文件夹删除,否则tomcat启动时不会重新解压新的war包
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息