jenkins部署测试服务器sehll脚本踩坑

jenkins访问服务器的时候执行啥进程的命令:

ps -ef | grep java | grep $dir_tomcat_home | awk '{ print $2 }'|xargs kill -9

先通过管道过滤出java再过滤目标服务的原因是:

本身通过jenkins/ssh 访问$dir_tomcat_home的这个操作也是一个进程,如果不限过滤掉的话,搜索结果如果该线程,排在前面会导致想要的进程没有杀掉,而杀掉了ssh访问的线程

awk "{print $2}":一行一行读取文件,以空格分割,输出第二个,这里是获取线程号

xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令

比如:

kickseed:~/projects$ ps -ef | grep java |grep /home/souche/tomcats/crm.dasouche.net

souche   13046     1  8 14:34 ?        00:02:04 /usr/local/share/java8/jre/bin/java -Djava.util.logging.config.file=/home/souche/tomcats/crm.dasouche.net/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /home/souche/tomcats/crm.dasouche.net/bin/bootstrap.jar:/home/souche/tomcats/crm.dasouche.net/bin/tomcat-juli.jar -Dcatalina.base=/home/souche/tomcats/crm.dasouche.net -Dcatalina.home=/home/souche/tomcats/crm.dasouche.net -Djava.io.tmpdir=/home/souche/tomcats/crm.dasouche.net/temp org.apache.catalina.startup.Bootstrap start

 

kickseed:~/projects$ ps -ef | grep /home/souche/tomcats/crm.dasouche.net

souche   13046     1  8 14:34 ?        00:02:05 /usr/local/share/java8/jre/bin/java -Djava.util.logging.config.file=/home/souche/tomcats/crm.dasouche.net/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /home/souche/tomcats/crm.dasouche.net/bin/bootstrap.jar:/home/souche/tomcats/crm.dasouche.net/bin/tomcat-juli.jar -Dcatalina.base=/home/souche/tomcats/crm.dasouche.net -Dcatalina.home=/home/souche/tomcats/crm.dasouche.net -Djava.io.tmpdir=/home/souche/tomcats/crm.dasouche.net/temp org.apache.catalina.startup.Bootstrap start

souche   13465 11963  0 14:59 pts/1    00:00:00 grep --color=auto /home/souche/tomcats/crm.dasouche.net

 

 

如果第二个命令中如果第二个会话线程在第一前面的话,会导致没有杀掉目标进程而杀掉了会话进程

 

 

export BUILD_ID=pleaseDontKillMe

export BUILD_ID=dontKillMe这一句很重要,因为该job启动完后执行下一job,jenkins直接把tomcat进程杀了,所以无论脚本中怎么写了启动tomcat的命令,他是不会启动的

猜你喜欢

转载自www.cnblogs.com/yzzfreedom/p/9046216.html