2015-04-15 57 views
2

所以我有一個腳本啓動一個服務並拖尾日誌文件,直到服務最終初始化。我使用以下來實現: Linux: Block until a string is matched in a file ("tail + grep with blocking")管道尾部輸出到當前運行的bash腳本

現在,我希望我的用戶在尾部開始時看到尾部文件的輸出,以便他們可以跟蹤服務的進度。我知道前幾種方法,比如產生一個新窗口並將所有尾部輸出管道輸送到新手柄。這隻適用於用戶在實際工作站但腳本通過SSH進行遠程交互的情況。所以這對我來說不起作用。

我希望這裏有人知道如何將尾部拖到運行窗口,同時將尾部文件的輸出保持爲一行。我想避免將所有輸出傳送到腳本屏幕。

如果我太模糊,請告訴我。我可以發佈截圖以幫助更好地解釋我想實現的目標。

謝謝

+0

回答有你用哪個?當你說「把尾巴放到跑窗上,同時把尾部文件的輸出保持爲一行」時,你是什麼意思?你想顯示整個日誌還是隻顯示正在搜索的行? –

+0

@EtanReisner第一個答案。 'grep -q'PATTERN'<(tail -f file.log)'。並且希望將整個日誌傳送到執行腳本的窗口,但是我希望不要噴出所有輸出,我們可以將它截斷爲一行。我希望我知道正確的術語,我相信這可能會幫助你更好地理解我所要求的。 – user0000001

+0

這是我不明白的部分。您如何期望在單行上顯示整個日誌文件?你的意思是你想要一行代碼保持更新,因爲在日誌中出現了新行嗎?像「狀態線」? –

回答

0

我不知道,我清楚地拿起您的所有需求,是SSH 100%的必要?

這裏有一個方法,你*可以做到這一點:

#if grep command succeeds then enter infinite loop to repeatedly post to netcat server for remote processing 
if (grep -q 'PATTERN'); then 
    while : 
     tail -n 1 | nc -l 3333 

而且你可以連接到它:

nc <you_other_server's_ip> 3333 
+0

你每行產卵1個尾巴過程...不應該這樣工作嗎? (我現在無法嘗試):{grep -q'PATTERN'&& tail -f;} | nc -l 3333 –