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