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 /'並且文件夾是空的 –