我有一个专门用作Jenkins从站的Ubuntu VM。我编写了一个单行脚本来运行从属jar,然后从/etc/rc.local运行该脚本。当我手动运行脚本时,我得到几行输出,表明它正在工作。我试图定义rc.local行和脚本,以便将stdout / stderr存储在一个文件中,但是该文件的长度始终为零,并且启动过程的时间为modtime。

在下面,某些字段用“ = stuff =“省略。

我的“ /etc/rc.local”的结尾看起来像这样:

su -c "/home/=user=/bin/jenkinsconnect" =user=
exit 0


“ jenkinsconnect”脚本如下所示:

#! /bin/bash
java -jar /home/=user=/opnfv_slave_root/slave.jar -jnlpUrl https://=host=/ci/computer/att-build/slave-agent.jnlp -secret =secret= 2>&1 > /home/=user=/jc.log


就像我说的那样,“ / home / = user = / jc.log”的长度始终为零,而modtime是我开始该过程的时间。

最佳答案

2>&1 > file语法将不起作用。您应该:


使用&>将stderr和stdout都定向到文件,或者
用括号将整个命令括起来以捕获输出:

(java -jar /home/=user=/opnfv_slave_root/slave.jar ... 2>&1) > /home/=user=/jc.log

07-25 22:20
查看更多