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执行带有环境变量的脚本不生效相关推荐

  1. linux java环境变量修改不生效_ansible执行带有环境变量的脚本不生效

    1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...

  2. cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...

    python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...

  3. linux 带环境变量 远程执行,SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...

  4. Windows环境变量设置后立即生效——方法总结

    前言 当开发android应用时,需要在windows环境下设置java的环境变量.通常我们将java的安装路径添加到系统环境变量path中去,然后重启之后,在命令提示符中输入 : java -ver ...

  5. windows下环境变量配置后没生效,不重启电脑的解决办法

    本篇文章主要讲解windows配置了环境变量但没有生效的原因及不重启电脑的解决办法 作者:任聪聪 配置环境变量后显示命令不存在,找不到,现象如下. 主要原因 windows配置完毕环境变量,由于某种原 ...

  6. java vbs_一键定位配置JAVA SDK 环境变量 VBS脚本全自动操作正式开源

    [Java] 纯文本查看 复制代码Set fso = CreateObject("Scripting.FileSystemObject") Set w = createobject ...

  7. 已解决:Java环境变量配置后不生效

    一.问题 从jdk8升级到jdk11,配置JAVA_HOME后,不生效. (备注:jdk8是安装版,jdk11是解压版.) 二.解决办法 在环境变量Path中,删除下面的配置: C:\Program ...

  8. SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:] ...

  9. Linux安装jdk配置环境变量无效(不生效)

    linux服务器上搭建jdk1.8的运行环境,但是因为该服务器上已经安装了jdk1.7,安装了jdk1.8后不起作用. 1.安装jdk1.8. 2.修改/etc/profile中的JAVA_HOME为 ...

最新文章

  1. GitHub开源:17M超轻量级中文OCR模型、支持NCNN推理
  2. 你见过最差的算法工程师什么样?
  3. C++11中值得关注的几大变化
  4. 分享几款linux的歌词插件
  5. bugku_本地包含
  6. PostgreSQL判断一个表是否存在
  7. 隐藏你不想要的:Bartender 4 for Mac菜单栏应用管理软件
  8. 计算机丢失gdiplus黑屏,电脑丢失gdiplus.dll黑屏,黑屏时还自动重启还怎么处理
  9. 考教师资格证需要买书吗?
  10. SAP FI组织结构及概念
  11. 11.什么是Heuristic
  12. nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题
  13. c语言单项选择题及答案,2011年计算机二级C语言单项选择题及答案解析精选3
  14. 一部手机就能完成人像三维扫描建模
  15. VBA 会被 Python 代替吗?
  16. 天不怕,地不怕,就怕李佳琦的“OMG,太好看了吧!”
  17. 玩游戏计算机丢失msvcp,电脑玩游戏提示“msvcp120.dll丢失”的解决方法
  18. android的50个优秀的UI界面设计例子
  19. 最新版珊瑚虫QQ带的流氓软件yok搜索引擎清除手记
  20. Copytranslator 设置默认字体大小

热门文章

  1. VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别(转载)
  2. Linux虚拟化KVM-Qemu分析(十一)之virtqueue
  3. Linux 硬中断和软中断
  4. 浅析 Bash 中的 {花括号} | Linux 中国
  5. java如何配置maven路径_如何配置Eclipse构建路径以使用Maven依赖项?
  6. javaWeb三大框架总结
  7. 鸿蒙开发者测评,看了下鸿蒙开发者测试版本
  8. matlab sunlink工具箱,FreeBSD handbook Unix Basics
  9. cn域名保护隐私_为什么域名隐私保护如此重要
  10. ElasticSearch实践(三)Rest API简介