監控串流並用awk及時打印出來 - Linux

Victoria avatar
By Victoria
at 2015-10-13T00:25

Table of Contents

※ 引述《makefriends (5 + 2 = life)》之銘言:
: 各位大大
: 小弟想對監控的串流訊息的每一行用awk加上時間戳後存成文字檔。
: 舉個例子:
: ping -c 50 127.0.0.1 | awk '{ print strftime("%T",systime()),$0 } ' | tee test.txt
: 可是awk好像是把整段訊息處理完後,才一口氣全部打印出來,
: 可是我希望log還沒跑完的時後,就可以一邊從銀幕上看到,就像是讓awk可以每處理完一行後就馬上打印出。
: 請問個位大大,有這個可能做到嗎?

這段 python code 提供給你測試看看,我初步看過應該可用:

#!/usr/bin/env python

import os
import sys
import time

while True:
line = sys.stdin.readline()
if len(line) != 0:
result="%s %s" % (time.strftime("%T"),line)
print result,
sys.stdout.flush()
else:
break

儲存成為 action.py 之後,後續這樣使用:

ping -c 50 127.0.0.1 | python action.py | tee xxxx.txt

提供給你參考。

這程式碼主要應該是重點為 sys.stdout.flush() 強迫立即輸出 stdout 內容,
我猜你的 awk 本身應該就是標準的 buffered 處理所以通常都要等 buffer 滿了
或者是必要時候才輸出,畢竟這是常見的緩衝機制。

--
Tags: Linux

All Comments

Edith avatar
By Edith
at 2015-10-16T07:07
謝謝你,這看起來很有用,我明天試試看

我想請教關於MIT license

Daph Bay avatar
By Daph Bay
at 2015-10-12T22:41
※ 引述《qas612820704 (Lego)》之銘言: : 大家好, 最近因為一些機緣 身為學生的我接了一個拍賣網站的案 : 我想釐清一下關於MIT license的事情 不知道版本問適不適當 : 但是我相信這裡的大大們一定對這塊比較了解 : Rails 跟 Bootstrap 都是在 MIT licen ...

我想請教關於MIT license

Quintina avatar
By Quintina
at 2015-10-12T22:07
大家好, 最近因為一些機緣 身為學生的我接了一個拍賣網站的案 我想釐清一下關於MIT license的事情 不知道版本問適不適當 但是我相信這裡的大大們一定對這塊比較了解 Rails 跟 Bootstrap 都是在 MIT license下的 那意思是說 我使用它所製作的任何東西都要掛在MIT li ...

HackingThursday 誰來晚餐 (2015-10-15)

Dora avatar
By Dora
at 2015-10-12T12:03
##### 此次聚會分固定聚會區及主題分享區,欲收看分享者,請至 ** Wiki 報名 ** [1]。 H4 開始一個新的活動 誰來晚餐[2],即與社群合作,在社群的固定聚會中,邀請一位原創或上游之軟體開發/維護人員,來與有興趣參與專案的朋友互動。 * * * * 主題: * 引言 — 參 ...

mac上找不到mosh

Suhail Hany avatar
By Suhail Hany
at 2015-10-12T09:48
這個問題有點怪 我有裝mosh,實際上在終端機輸入mosh也能正確執行 我的終端機用iterm2,然後我寫一個script來跑mosh 這個script我在iterm2下直接跑可以 但我設成profiles來跑,就是開啟這個profile的時候直接run這個script 就會跟我說找不到mosh.... ...

監控串流並用awk及時打印出來

Necoo avatar
By Necoo
at 2015-10-12T00:54
各位大大 小弟想對監控的串流訊息的每一行用awk加上時間戳後存成文字檔。 舉個例子: ping -c 50 127.0.0.1 | awk and#39;{ print strftime(and#34;%Tand#34;,systime()),$0 } and#39; | tee test.txt 可 ...