我有一个 bash 脚本,我从 Jenkins 的构建步骤中调用它。在这个 bash 脚本中有一个 nohup 命令,用于在后台调用不同的脚本,例如:
#!/bin/bash
nohup otherScript.sh &
构建步骤完成后,我转到应该创建 nohup.out 的路径,但那里什么都没有。关于发生了什么的任何想法?
您应该确保输出进入构建的工作区。这将避免其他目录的权限问题。
nohup otherScript.sh > $WORKSPACE/scriptOutput.txt 2>&1 &
引自man nohup
:
如果标准输入是终端,则将其从 /dev/null 重定向。如果标准输出是终端,
nohup.out
则尽可能将输出附加到,$HOME/nohup.out
否则。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到 FILE,请使用nohup COMMAND > FILE
.
从 Jenkins 运行命令可能意味着它STDOUT
不是终端,因此nohup.out
没有创建。正如gareth_bowles已经建议的那样,您应该将输出重定向到具有定义路径的文件:
nohup script.sh >/path/to/output.log 2>&1 &