假設你的文件是$WORKSPACE
下:
tail -F *.log
編輯:
或者你可以考慮重新寫,但你foo.sh
和bar.sh
,而不是重定向到日誌文件,tee
安慰和日誌文件。
echo "doing stuff" 2>&1|tee -a foo.log
上面會打印到控制檯(其顯示在詹金斯控制檯輸出),並重定向到foo.log
編輯2:
如果你有超過foo.sh
和bar.sh
沒有控制,就需要一個包裝腳本,以一些欺騙手段啓動它們。
基本上,在你發送foo.sh
到後臺(以便我們可以繼續)之前,你在tail
日誌之前,你需要確保tail
會被殺死。我們通過啓動另一個後臺進程來監控foo.sh
進程並殺死tail
(這還未在腳本中啓動)。由於我們還沒有推出tail
然而,我們真的不知道它的PID是什麼,因此我們通過命令行稱其
# Send foo.sh to background and record the PID
echo "Launching foo.sh to background"
nohup ./foo.sh &
foo_pid=$!
echo "Foo PID to monitor=$foo_pid"
# Launch a statement that will run ever 3 seconds to monitor status
# of foo.sh, and if foo.sh finished, then kill a 'future' tail command
echo "Launching tail-killer to background"
nohup $(sleep 3; while kill -0 $foo_pid; do sleep 3; done; kill $(ps --no-heading -C "tail -F foo.log" | awk '{print $1}')) &
# Tail foo.sh's log
echo "Launching tail to monitor foo.sh"
echo
tail -F foo.log
echo
# Get the return code of foo.sh
wait $foo_pid
echo "Foo.sh returned with $?
注意事項/改進:
- 的「殺手「過程每3秒運行一次。由於性能原因,您可能需要增加
Foo.sh
在調用tail
之前可能會打印超過10行的行。使用tail -n
增加起始行數。
- 如果檢測到多個
tail -F foo.log
,則「殺手」將會中斷。你應該修改它以更加強大
'tail -f'實際上是我想要做的,但我可以在不阻止構建的情況下做到這一點,'tail -f'如何知道什麼時候構建完成?當然,我不想SSH進入服務器! – xconspirisist
@xconspirisist用'tee'建議編輯 – Slav
對不起,先生,我沒有在我原來的問題中說過 - 我不能修改腳本(顯然他們是佔位符)在stdout上輸出(或者我的問題會被解決! – xconspirisist