【问题标题】:Bash script not outputting nohup.out + JenkinsBash 脚本不输出 nohup.out + Jenkins
【发布时间】:2013-06-03 17:37:04
【问题描述】:

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

#!/bin/bash
nohup otherScript.sh &

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

【问题讨论】:

  • 通过使用 Jenkins 在后台运行命令,你违背了它的目的,即在脚本运行时监控它们。

标签: bash jenkins nohup


【解决方案1】:

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

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

【讨论】:

  • 最后的& 不是不需要的吗?即使出现错误情况,它也会使脚本继续成功...?
  • 也许吧,但原来的问题有 & 所以我把它包含在我的答案中。
【解决方案2】:

引用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 &

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    相关资源
    最近更新 更多