在linux系統中,journalctl是systemd下的日志查看工具,比傳統syslog更強大。1.執行journalctl不加參數會顯示全部日志,建議結合–since和–until限定時間范圍,如journalctl –since "1 hour ago"查看最近一小時日志;2.使用-u參數可按服務查看日志,例如journalctl -u nginx.service僅查看nginx服務日志,排查問題時更聚焦;3.添加-k參數可查看內核日志,等價于dmesg,加上–boot則顯示啟動時的內核消息;4.使用-f參數可實時觀察日志變化,類似tail -f,如journalctl -u httpd.service -f可實時監控httpd服務輸出,調試時非常實用。掌握這些基礎用法能有效應對日常運維和排錯需求。
在Linux系統中,查看系統日志是排查問題、監控運行狀態的重要手段。journalctl 是 systemd 系統下的一個工具,它能幫助我們查看結構化日志數據,比傳統的 syslog 更強大也更方便。
journalctl 基礎用法
journalctl 默認不帶參數執行時,會顯示全部的日志內容,從最老的記錄一直到最后一條。但因為日志通常很多,直接看可能會眼花繚亂。建議一開始加上 –since 和 –until 來限定時間范圍,比如:
journalctl --since "1 hour ago"
這樣就能只看最近一小時內的日志,更容易定位問題。
按服務查看日志:-u 參數很關鍵
如果你只想看某個服務的日志,比如 nginx 或 sshd,使用 -u 參數指定服務名就非常有用。例如:
journalctl -u nginx.service
這樣就能只看 nginx 的日志,避免被其他無關信息干擾。這個方法特別適合在排查特定服務異常時使用。
注意,systemd 服務的名字通常以 .service 結尾,如果不確定服務名,可以用 systemctl list-units | grep 服務關鍵詞 來查找。
查看內核日志:dmesg 的替代方案
journalctl 還可以用來查看內核日志,等價于 dmesg 的功能。只需要加個 -k 參數:
journalctl -k
這條命令會顯示出所有來自內核的日志。如果你只關心系統啟動時的內核消息,可以加上 –boot:
journalctl -k --boot
這對于排查硬件識別、驅動加載等問題非常有幫助。
實時查看日志:像 tail -f 一樣操作
有時候我們需要實時觀察日志的變化,這時候可以使用 -f 參數,效果類似 tail -f /var/log/messages:
journalctl -f
你也可以結合 -u 使用,比如:
journalctl -u httpd.service -f
這樣就能實時看到 httpd 服務的日志輸出,調試服務行為時非常實用。
基本上就這些常用方式了。journalctl 功能豐富,掌握這幾個基礎用法,大多數日常運維和排錯場景都能應對。不復雜但容易忽略的是時間過濾和按服務查詢這兩個點,用好了效率提升明顯。