我有一个可以从Jenkins调用的Ant脚本 - 在其他部署任务之后 - 启动一个JBoss服务器。部署包已经包含一个启动脚本,它包装了JBoss运行脚本:
[...]/bin/run.sh -b ip -c config >/dev/null 2>&1 &
启动脚本在手动执行时运行正常(即ssh到服务器和sudo ./startup.sh)
现在我无法从sshexec
任务调用此启动脚本。该任务可以执行启动脚本,JBoss确实会启动,但会在任务返回后立即终止并继续执行下一个任务 - 类似于直接运行run.sh
并关闭会话。
我的任务很标准
<sshexec host="host" username="username" password="password"
command="echo password | sudo -S sh ${JBOSS_HOME}/server/config/startup.sh" />
我很困惑。上面的启动脚本是否应该已经从会话中单独启动JBoss?知道如何解决这个问题吗?
远程系统是Redhat 6。
答案 0 :(得分:0)
没关系,我找到了。仍需要将nohup
和后台运行与启动脚本相结合。再加上这里的“肮脏的解决方法”
https://unix.stackexchange.com/questions/91065/nohup-sudo-does-not-prompt-for-passwd-and-does-nothing(实际上很棒)
最终结果:
echo password | sudo -S env && sudo sh -c 'nohup startup.sh > /dev/null 2>&1 &'