我正在尝试运行一个在linux上停止并启动Tomcat的脚本。
当我从命令行运行它时它工作正常。但是,当我从Jenkins / Hudson作业中的“Execute Shell”构建步骤运行相同的脚本时,它似乎不起作用。 Jenkins没有报告任何错误,但如果我尝试进入tomcat页面,那么我会收到一个找不到错误的页面。
所以Jenkins似乎能够停止服务器,但不会重新启动它。
我会感激任何帮助。
答案 0 :(得分:19)
尝试在“shell execute”块中取消设置BUILD_ID。在这种情况下,您甚至可能不需要使用nohup
BUILD_ID=
./your_hudson_script_that_starts_tomcat.sh
答案 1 :(得分:1)
如果没有看到您的脚本,很难给出确切的答案。但是,您可以尝试将以下内容添加到脚本的开头(假设它是一个bash脚本):
# Trace executed commands.
set -x
# Save stdout / stderr in files
exec >/tmp/my_script.stdout
exec 2>/tmp/my_script.stderr
您也可以尝试添加
set -e
如果命令返回错误状态,则立即退出shell。
如果看起来Hudson正在杀死Tomcat,那么你可能想在nohup中运行它(如果你还没有这样做的话):
nohup bin/startup.sh >/dev/null 2>&1 &