ansible读不到java_home_ansible执行带有环境变量的脚本不生效
1背景
jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量。
ansible主机为:172.16.35.8
tomcat服务器为:172.16.35.56
2tomcat启动脚本
1[app@cecntos jenkins]$ cat tomcat_start.sh2#!/bin/bash34export CATALINA_YCLOANS_BASE CATALINA_YCLOANS_HOME TOMCAT_YCLOANS_HOME
5export JAVA_HOME=/usr/local/java/jdk1.6.0_45
6export PATH=$JAVA_HOME/bin:$PATH
7export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar8
9
10#1.启动tomcat
11echo"setup01:启动tomcat"12cd/usr/local/tomcat/bin/ && ./startup.sh
13Process=`ps -ef |grep '/usr/local/tomcat' |grep -v grep|awk '{print $2}'|wc -l`
14sleep1015if [ "$Process" -eq "0"];then16 echo "启动tomcat失败!"
17exit
18else
19 echo "启动tomcat完成!"20fi
3现象
在tomcat服务器执行脚本无问题,可以正常启动。
启动
1[app@cecntos jenkins]$ ps -ef|grep tomcat
2app1075 10257 0 11:26 pts/4 00:00:00grep tomcat3[app@cecntos jenkins]$4[app@cecntos jenkins]$ sh tomcat_start.sh
5setup01:启动tomcat
6Using CATALINA_CMIS_BASE:/usr/local/tomcat
7Using CATALINA_CMIS_HOME:/usr/local/tomcat
8Using CATALINA_TMPDIR:/usr/local/tomcat/temp
9Using JRE_HOME:/usr/local/java/jdk1.6.0_45/jre
10Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar: /usr/local/tomcat/bin/tomcat-juli.jar
11Tomcat started.12 启动tomcat完成!
在tomcat服务器查看状态正常;
1[app@cecntos jenkins]$ ps -ef|grep tomcat
2app1181 1178 75 11:26 pts/4 00:00:18 /usr/local/java/jdk1.6.0_45/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.rmi.server.hostname=172.16.136.xx -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xms512m -Xmx2048m -XX:PermSize=1024M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -XX:ParallelGCThreads=50 -XX:+UseConcMarkSweepGC -Xloggc:./gc.log -XX:+UseConcMarkSweepGC -Xloggc:./gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump.core -Djava.endorsed.dirs=/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
3app1610 10257 0 11:27 pts/4 00:00:00 grep tomcat
在tomcat服务器停止后去ansible主机执行启动脚本;
1[app@cecntos jenkins]$ ps -ef |grep 'tomcat' |grep -v grep|awk '{print $2}'|xargs kill -9
2[app@cecntos jenkins]$ ps -ef|grep tomcat
3app15110 28067 0 13:56 pts/4 00:00:00 grep tomcat
在ansible主机执行tomcat启动脚本;
1[jenkins@VMcentos ~]$ sudo ansible 172.16.35.56 -u app -m shell -a 'sh /home/app/jenkins/tomcat_start.sh'
2172.16.35.56 | SUCCESS | rc=0 >>3setup01:启动tomcat
4Tomcat started.5 启动tomcat完成!
显示启动成功,但是查看却没有进程;
1[app@cecntos jenkins]$ ps -ef|grep tomcat
2app2390 10257 0 11:28 pts/4 00:00:00grep tomcat3[app@cecntos jenkins]$
4解决方法
在ansible执行启动脚本时,加一个“nohup”参数就可以解决
sh "sudo ansible ${serverIP} -u ${serverName} -m shell -a 'nohup sh ${cmisonlineShellName}'"
1[jenkins@VM_131_4_centos ~]$ sudo ansible 172.16.35.56 -u app -m shell -a 'nohup sh /home/app/jenkins/tomcat_start.sh'
2172.16.35.56 | SUCCESS | rc=0 >>3setup01:启动tomcat
4Tomcat started.5 启动tomcat完成!
查看;
1[app@cecntos jenkins]$ ps -ef|grep tomcat
2app1181 1178 75 11:26 pts/4 00:00:18 /usr/local/java/jdk1.6.0_45/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.rmi.server.hostname=172.16.136.xx -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xms512m -Xmx2048m -XX:PermSize=1024M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -XX:ParallelGCThreads=50 -XX:+UseConcMarkSweepGC -Xloggc:./gc.log -XX:+UseConcMarkSweepGC -Xloggc:./gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump.core -Djava.endorsed.dirs=/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
3app1610 10257 0 11:27 pts/4 00:00:00 grep tomcat
5原因
ansible执命令,默认不加载环境变量,nohup参数让脚本在后台执行,就可以加载里面的环境变量。
ansible读不到java_home_ansible执行带有环境变量的脚本不生效相关推荐
- linux java环境变量修改不生效_ansible执行带有环境变量的脚本不生效
1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...
- cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...
python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...
- linux 带环境变量 远程执行,SSH远程执行命令环境变量问题
SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...
- Windows环境变量设置后立即生效——方法总结
前言 当开发android应用时,需要在windows环境下设置java的环境变量.通常我们将java的安装路径添加到系统环境变量path中去,然后重启之后,在命令提示符中输入 : java -ver ...
- windows下环境变量配置后没生效,不重启电脑的解决办法
本篇文章主要讲解windows配置了环境变量但没有生效的原因及不重启电脑的解决办法 作者:任聪聪 配置环境变量后显示命令不存在,找不到,现象如下. 主要原因 windows配置完毕环境变量,由于某种原 ...
- java vbs_一键定位配置JAVA SDK 环境变量 VBS脚本全自动操作正式开源
[Java] 纯文本查看 复制代码Set fso = CreateObject("Scripting.FileSystemObject") Set w = createobject ...
- 已解决:Java环境变量配置后不生效
一.问题 从jdk8升级到jdk11,配置JAVA_HOME后,不生效. (备注:jdk8是安装版,jdk11是解压版.) 二.解决办法 在环境变量Path中,删除下面的配置: C:\Program ...
- SSH远程执行命令环境变量问题
SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:] ...
- Linux安装jdk配置环境变量无效(不生效)
linux服务器上搭建jdk1.8的运行环境,但是因为该服务器上已经安装了jdk1.7,安装了jdk1.8后不起作用. 1.安装jdk1.8. 2.修改/etc/profile中的JAVA_HOME为 ...
最新文章
- GitHub开源:17M超轻量级中文OCR模型、支持NCNN推理
- 你见过最差的算法工程师什么样?
- C++11中值得关注的几大变化
- 分享几款linux的歌词插件
- bugku_本地包含
- PostgreSQL判断一个表是否存在
- 隐藏你不想要的:Bartender 4 for Mac菜单栏应用管理软件
- 计算机丢失gdiplus黑屏,电脑丢失gdiplus.dll黑屏,黑屏时还自动重启还怎么处理
- 考教师资格证需要买书吗?
- SAP FI组织结构及概念
- 11.什么是Heuristic
- nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题
- c语言单项选择题及答案,2011年计算机二级C语言单项选择题及答案解析精选3
- 一部手机就能完成人像三维扫描建模
- VBA 会被 Python 代替吗?
- 天不怕,地不怕,就怕李佳琦的“OMG,太好看了吧!”
- 玩游戏计算机丢失msvcp,电脑玩游戏提示“msvcp120.dll丢失”的解决方法
- android的50个优秀的UI界面设计例子
- 最新版珊瑚虫QQ带的流氓软件yok搜索引擎清除手记
- Copytranslator 设置默认字体大小
热门文章
- VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别(转载)
- Linux虚拟化KVM-Qemu分析(十一)之virtqueue
- Linux 硬中断和软中断
- 浅析 Bash 中的 {花括号} | Linux 中国
- java如何配置maven路径_如何配置Eclipse构建路径以使用Maven依赖项?
- javaWeb三大框架总结
- 鸿蒙开发者测评,看了下鸿蒙开发者测试版本
- matlab sunlink工具箱,FreeBSD handbook Unix Basics
- cn域名保护隐私_为什么域名隐私保护如此重要
- ElasticSearch实践(三)Rest API简介