Bash脚本未输出nohup.out+Jenkins

Bash脚本未输出nohup.out+Jenkins,bash,jenkins,nohup,Bash,Jenkins,Nohup,我有一个bash脚本,我在Jenkins的构建步骤中调用它。在此bash脚本中有一个nohup命令,用于在后台调用不同的脚本,例如: #!/bin/bash nohup otherScript.sh & 构建步骤完成后,我转到应该创建nohup.out的路径,但是那里什么都没有。有什么想法吗?您应该确保输出进入构建的工作区。这将避免其他目录的权限问题 nohup otherScript.sh > $WORKSPACE/scriptOutput.txt 2>&1 &a

我有一个bash脚本,我在Jenkins的构建步骤中调用它。在此bash脚本中有一个nohup命令,用于在后台调用不同的脚本,例如:

#!/bin/bash
nohup otherScript.sh &

构建步骤完成后,我转到应该创建nohup.out的路径,但是那里什么都没有。有什么想法吗?

您应该确保输出进入构建的工作区。这将避免其他目录的权限问题

nohup otherScript.sh > $WORKSPACE/scriptOutput.txt 2>&1 &

您应该确保输出进入构建的工作区。这将避免其他目录的权限问题

nohup otherScript.sh > $WORKSPACE/scriptOutput.txt 2>&1 &
引用曼·诺胡普的话:

如果标准输入是终端,请从/dev/null重定向它。如果标准输出是终端,则尽可能将输出附加到nohup.out,否则为$HOME/nohup.out。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到文件,请使用nohup命令>文件

从Jenkins运行命令可能意味着STDOUT不是终端,因此不会创建nohup.out。如前所述,您应该将输出重定向到具有定义路径的文件:

nohup script.sh >/path/to/output.log 2>&1 &
引用曼·诺胡普的话:

如果标准输入是终端,请从/dev/null重定向它。如果标准输出是终端,则尽可能将输出附加到nohup.out,否则为$HOME/nohup.out。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到文件,请使用nohup命令>文件

从Jenkins运行命令可能意味着STDOUT不是终端,因此不会创建nohup.out。如前所述,您应该将输出重定向到具有定义路径的文件:

nohup script.sh >/path/to/output.log 2>&1 &

如果在后台使用Jenkins运行命令,您就违背了它的目的,也就是在脚本运行时监视脚本。如果在后台使用Jenkins运行命令,您就违背了它的目的,也就是在脚本运行时监视脚本。最终结果是否不需要?即使在出现错误的情况下,它也会使脚本继续成功?也许吧,但是原来的问题有一个-,所以我把它包括在我的答案中。最后一个-,不是多余的吗?即使在出现错误的情况下,它也会使脚本继续成功?也许吧,但是原来的问题有一个答案&所以我把它包括在我的答案中。