首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins作业通过ssh终止进程(Tomcat)

Jenkins作业通过ssh终止进程(Tomcat)
EN

Stack Overflow用户
提问于 2013-01-05 06:46:09
回答 4查看 3.3K关注 0票数 1

我使用Jenkins作业来运行几个简单的shell命令(通过ssh,通过Jenkins SSH插件);这些命令应该关闭正在运行的Tomcat服务器:

代码语言:javascript
复制
sudo /opt/tomcat/bin/catalina.sh stop
ps xu | awk '/[t]omcat/{print $2}' | xargs -r kill -9

该作业执行良好,并终止Tomcat,但不幸的是,它也失败了;完整的输出是:

代码语言:javascript
复制
[SSH] executing pre build script:

sudo /opt/tomcat/bin/catalina.sh stop
ps xu | awk '/[t]omcat/{print $2}' | xargs kill -9
[SSH] exit-status: -1
Finished: FAILURE

知道为什么命令if的退出代码是-1吗?我已经尝试了几个变种,但没有任何运气。

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2013-01-05 09:33:18

您应该检查ps xu的输出。由于kill将按顺序杀死进程,因此如果ps xu产生了多个tomcat进程,则其他进程将在第一个进程终止后自动终止。然后,kill尝试终止不再存在的进程。

票数 1
EN

Stack Overflow用户

发布于 2013-01-06 03:45:01

我怀疑Jenkins不喜欢kill命令打印的不能运行的no process killed。尝试将stdout重定向到/dev/null。

票数 1
EN

Stack Overflow用户

发布于 2015-12-20 18:01:34

这些问题有点陈旧,但当我偶然发现这一点时,这里有另一个建议。

代码语言:javascript
复制
ps xu | awk '/[t]omcat/{print $2}'

返回正在运行的tomcat和awk进程本身,请参见此处

代码语言:javascript
复制
<user>     2370  0.0  0.0  26144  1440 pts/7    R+   10:51   0:00 awk /[t]omcat/{print $2}

awk进程在运行xargs之前会立即结束,因此其中一个xargs的退出代码不等于0。

尝试运行killall tomcat

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14166240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档