1
我想捕获詹金斯启动脚本的输出,但我得到的只是一个空输出。如何捕获詹金斯启动日志
詹金斯的输出出现在终端
#!/bin/bash
function sendNotificationOnSlack() {
curl -X POST ...
}
export -f sendNotificationOnSlack
java -Dhudson.DNSMultiCast.disabled=true -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpPort=3999 | awk '/Jenkins is fully up and running/ {system("bash -c sendNotificationOnSlack")}'
我试过甚至捕捉到TTY的输出,但显示为空
#!/bin/bash
currentTTY=$(tty)
echo $currentTTY
function sendNotificationOnSlack() {
curl -X POST ...
}
export -f sendNotificationOnSlack
java -Dhudson.DNSMultiCast.disabled=true -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpPort=3999
tail -f $currentTTY | awk '/Jenkins is fully up and running/ {system("bash -c sendNotificationOnSlack")}'
我试着到处寻找,但我找不到jenkins.log文件,任何人有任何建议?
我不能完全肯定关于这个问题,但是如果你必须捕获输出,也许你应该让Jenkins在一个进程中产卵并从另一个进程中捕获日志。也就是说,也许你应该'输出'[像这样](http://stackoverflow.com/questions/692000/how-do-i-write-stderr-to-a-file-while-using-tee-用管道)将文件转换成文件并从那里进行处理,将管道移到awk文件中。 'awk'可以用于'tee'写的文件。 – alok
另外,我假设你不想让日志落在'/ var/log/jenkins/jenkins.log'里吗? – alok
@alok感谢您的回复。问题是输出不会被捕获,即使在shell上显示“awk”管道(一个没有重定向的标志,但仍然会到达相同的地方)。 我已经检查过'/ var/log/jenkins /'并且文件夹是空的 –