我想在Fedora上關注perl中的日誌文件,但不幸的是,Fedora使用journalctl
來讀取我無法直接解析的二進制日誌文件。據我的理解,這意味着我只能通過調用journalctl
來閱讀Fedora的日誌文件。如何處理來自Perl中連續過程管道的更新
我試着用IO::Pipe
要做到這一點,但問題是,$p->reader(..)
等待,直到journalctl --follow
完成寫入輸出(這將是永遠不會因爲--follow
就像tail -F
),然後讓我打印所有的東西是不是我想要的。我希望能夠設置一個回調函數,以便每次將新行打印到流程管道時進行調用,以便我可以分析/處理每個新的日誌事件。
use IO::Pipe;
my $p = IO::Pipe->new();
$p->reader("journalctl --follow"); #Waits for process to exit
while (<$p>) {
print;
}
您的代碼工作完美,當我使用.e.g。 '尾巴-f消息'而不是'journalctl'(我沒有)。你有沒有試過'journalctl - followlow - no-pager'? –
'--no-pager'是一個紅色的鯡魚,因爲任何明智的Unix程序只會在它的'stdout'是'tty'時調用一個尋呼機。我在我的Jolla電話(它有'journalctl')上試過你的程序,它按預期工作。無論什麼是錯的都不在你的代碼中! –
@HansLub完美的作品,謝謝。 –