我正在使用命名管道來捕獲系統日誌消息。然後,我可以通過做類似FIFO要grep到文件
cat /var/log/local3.pipe | grep somefilter
or
grep somefilter /var/log/local3.pipe
很容易地查看系統日誌。這些都將syslogs輸出到控制檯非常好。但是,如果我再要拍攝到一個文件中我什麼也沒得到,如
cat /var/log/local3.pipe | grep somefilter >> somefile.log
or
grep somefilter /var/log/local3.pipe >> somefile.log
文件始終保持爲零字節。有誰知道爲什麼?我正在使用紅帽企業Linux 5.謝謝。
附加信息:對於任何人誰願意在這裏重現此的命令的完整列表
su
<enter root password>
mkfifo /var/log/local3.pipe
chmod 644 /var/log/local3.pipe
echo "local3.* |/var/log/local3.pipe" >> /etc/syslog.conf
/etc/init.d/syslog restart
exit
然後用一個SSH會話:
cat /var/log/local3.pipe
,並在第二個SSH會話(「測試一下「應顯示在第一個ssh會話
logger -p local3.info "Test it"
然後在第一個會話中將其更改爲
cat /var/log/local3.pipe >> somefile.log
發送一些更多的日誌到本地3(消息需要不同)。確認消息進入somefile.log
logger -p local3.info "Test it 2"
然後在第一個環節改變它
cat /var/log/local3.pipe | grep -i test >> somefile.log
現在確認日誌不會somefile.log
注意消息需要與上一條消息不同,否則記錄器不會立即發送。
您是第一次執行'grep somefilter/var/log/local3.pipe',然後是'grep somefilter /var/log/local3.pipe >> somefile.log'?因爲那時管道的內容已經消耗完了。 – Cairnarvon 2013-02-20 00:36:19
嗨Cairnarvon。在執行第二個命令之前,我總是終止第一個命令。我可以在這兩個命令之間來回切換,第一個始終工作,第二個總是產生一個零字節的文件。如果我做cat /var/log/local3.pipe >> somefile.log,那就行了。看起來,將grep放入混合文件(以及管道到文件)會使事情停止。 – MikeKulls 2013-02-20 00:53:51