Jenkins构建完后将war包通过 Publish Over SSH 的插件发布到服务器上,在服务器上执行脚本时,脚本中的 nohup 命令无法执行,并不生效,我配置的Exec command命令是后台启动一个war包,并输出日志文件。
nohup java -jar /home/jkapp/jkapp/jkapp.war > /home/jkapp/jkapp/jkapp.log 2>&1
在网上查询资料后,有人说命令前要加上source /etc/profile
source /etc/profile
nohup java -jar /home/jkapp/jkapp/jkapp.war > /home/jkapp/jkapp/jkapp.log 2>&1
加上后,Exec command命令确实可以执行了,但是会造成停止不了的现象,导致jenkins连接超时,error报错。
所以加上source /etc/profile的方法并不正确。
于是我在这里卡了很久的时间。
最终我找到了这个问题的完美解决办法:
那就是在Transfer的高级选项中勾选上Exec in pty
测试结果:
执行成功,问题解决了!