Linux使用journalctl命令進(jìn)行日志分析和管理全過程
目前,在大多數(shù)主流 Linux 發(fā)行版中,systemd 已取代傳統(tǒng)的 SysVinit 成為默認(rèn)的初始化系統(tǒng)。其最大的優(yōu)勢之一在于統(tǒng)一、高效的日志管理系統(tǒng)。
- 傳統(tǒng)模式(syslog):日志分散在
/var/log/下多個(gè)純文本文件中,分析時(shí)需頻繁組合grep,awk,tail等命令,操作繁瑣。 - 現(xiàn)代模式(systemd-journald):日志被集中收集并以二進(jìn)制格式結(jié)構(gòu)化存儲,通過
journalctl這一單一命令,即可提供強(qiáng)大的查詢、過濾和實(shí)時(shí)監(jiān)控能力,大大提升了系統(tǒng)管理員排錯(cuò)和審計(jì)的效率。
1.核心概念
- journald:
systemd套件中的日志收集守護(hù)進(jìn)程。它負(fù)責(zé)從內(nèi)核、系統(tǒng)服務(wù)、應(yīng)用程序等各類來源接收日志消息,并寫入到系統(tǒng)日志中。 - journalctl:用于與
journald交互的命令行工具。它是查詢、分析和操作這些集中式日志的核心利器。
2.確認(rèn)日志服務(wù)已啟用
部分桌面發(fā)行版可能默認(rèn)不持久化存儲日志。請按以下步驟驗(yàn)證和啟用:
(1)檢查日志目錄
確認(rèn) /var/log/journal/ 目錄是否存在。若不存在,需要手動創(chuàng)建并設(shè)置正確權(quán)限(通常系統(tǒng)會自動處理),如下命令:
sudo mkdir -p /var/log/journal sudo chown root:systemd-journal /var/log/journal sudo chmod 755 /var/log/journal
示例:
[root@yyzcdb81 ~]# mkdir -p /var/log/journal [root@yyzcdb81 ~]# chown root:systemd-journal /var/log/journal [root@yyzcdb81 ~]# chmod 755 /var/log/journal [root@yyzcdb81 ~]#
(2)檢查配置文件
編輯 /etc/systemd/journald.conf,確保 Storage= 選項(xiàng)設(shè)置為 persistent(永久存儲):
[Journal] Storage=persistent

(3)重啟 journald 服務(wù)
[root@yyzcdb81 ~]# systemctl restart systemd-journald [root@yyzcdb81 ~]#
(4)驗(yàn)證目錄是否被使用
[root@yyzcdb81 ~]# ls -la /var/log/journal/ 總用量 8 drwxr-xr-x 3 root systemd-journal 46 1月 16 11:48 . drwxr-xr-x. 20 root root 4096 1月 16 11:42 .. drwxr-xr-x 2 root root 206 1月 16 11:48 763d2caf072f43a4838ece68a2b5010a [root@yyzcdb81 ~]#

3.基礎(chǔ)操作:查看與導(dǎo)航日志
3.1 查看完整日志
journalctl
默認(rèn)按時(shí)間順序(從舊到新)顯示所有日志,并使用 less 分頁器進(jìn)行瀏覽。
關(guān)于 less 的快捷鍵功能如下:
| 快捷鍵 | 功能 |
|---|---|
| 空格鍵 或 Page Down | 向下翻一頁 |
| b 或 Page Up | 向上翻一頁 |
| g | 跳轉(zhuǎn)到第一行 |
| G | 跳轉(zhuǎn)到最后一行 |
| /關(guān)鍵詞 | 向下搜索 |
| ?關(guān)鍵詞 | 向上搜索 |
| n / N | 跳轉(zhuǎn)到下一個(gè)/上一個(gè)匹配項(xiàng) |
| q | 退出 |
3.2基本顯示控制
(1)反轉(zhuǎn)順序(最新優(yōu)先):
journalctl -r

(2)僅查看最新 N 行:
journalctl -n 10

(3)禁用分頁,直接輸出:
journalctl --no-page
它適用于腳本中或需要重定向時(shí)。
(4)實(shí)時(shí)跟蹤日志:
journalctl -f

功能類似 tail -f,按 Ctrl+C 終止。
4.進(jìn)階技巧:精準(zhǔn)過濾日志
journalctl 的真正威力在于其強(qiáng)大的過濾能力。
4.1 按時(shí)間過濾
(1)使用自然語言:
journalctl --since "yesterday" journalctl --since "today" journalctl --since "2 hours ago" --until "1 hour ago"
(2)使用精確時(shí)間戳:
journalctl --since "2026-01-14 09:00:00" --until "2026-01-15 20:00:00"
(3)顯示 UTC 時(shí)間:
journalctl --utc
4.2 按系統(tǒng)組件過濾
(1)按服務(wù)(Unit)
journalctl -u sshd -u nginx.service
(2)按進(jìn)程ID
journalctl _PID=1111
(3)按用戶/組ID
journalctl _UID=1000 _GID=1000
(4)僅內(nèi)核消息
journalctl -k

4.3 按優(yōu)先級(日志等級)過濾
系統(tǒng)日志按嚴(yán)重程度分為以下等級(數(shù)字越小越嚴(yán)重):
| 優(yōu)先級數(shù)字 | 名稱 | 說明 |
|---|---|---|
0 | emerg | 系統(tǒng)不可用 |
1 | alert | 必須立即采取措施 |
2 | crit | 嚴(yán)重情況 |
3 | err | 錯(cuò)誤 |
4 | warning | 警告 |
5 | notice | 普通但重要的事件 |
6 | info | 信息性消息 |
7 | debug | 調(diào)試信息 |
- 查看特定級別及以上:
journalctl -p err(顯示所有錯(cuò)誤、嚴(yán)重、警報(bào)和緊急消息) - 查看級別范圍:
journalctl -p warning..info或journalctl -p 4..6
4.4 按系統(tǒng)啟動周期過濾
(1)列出所有啟動記錄:
journalctl --list-boots
[root@yyzcdb81 ~]# journalctl --list-boots 0 fb70ee73675940929779319e7d577041 五 2025-12-19 02:10:49 CST—五 2026-01-16 12:20:01 CST [root@yyzcdb81 ~]#
(2)查看特定啟動周期的日志:
journalctl -b -0 # 當(dāng)前啟動周期 journalctl -b -1 # 上一次啟動周期 journalctl -b -2 # 上上次啟動周期
5.綜合應(yīng)用:解決實(shí)際問題的命令示例
5.1 查看 SSH 服務(wù)從今早開始出現(xiàn)的錯(cuò)誤
journalctl -u ssh --since "today" -p err
5.2 系統(tǒng)剛剛啟動失敗
查看上次啟動的所有內(nèi)核和關(guān)鍵錯(cuò)誤
journalctl -b -1 -k -p crit..err
5.3 實(shí)時(shí)監(jiān)控 Nginx 服務(wù)的訪問日志(info級別)
journalctl -u nginx -f _TRANSPORT=journal PRIORITY=6
5.4 經(jīng)典排錯(cuò)命令
常用于系統(tǒng)服務(wù)啟動失敗后,立即查看詳細(xì)的錯(cuò)誤上下文。
journalctl -xe
-e:直接跳轉(zhuǎn)到日志末尾。-x:提供額外的解釋信息和可能的解決方案鏈接(如果存在)。
6.系統(tǒng)維護(hù)與資源管理
6.1 檢查日志占用的磁盤空間
journalctl --disk-usage
[root@yyzcdb81 ~]# journalctl --disk-usage Archived and active journals take up 272.0M on disk. [root@yyzcdb81 ~]#
6.2清理歷史日志(謹(jǐn)慎操作)
# 清理早于指定時(shí)間的日志 journalctl --vacuum-time=2weeks # 或?qū)⑷罩究傮w積限制到指定大小 journalctl --vacuum-size=500M
[root@yyzcdb81 ~]# journalctl --vacuum-time=2weeks Deleted archived journal /var/log/journal/763d2caf072f43a4838ece68a2b5010a/system@ec908698112d428d9c82876cf1f78404-0000000000000001-0006463de16e9c8a.journal (128.0M). Deleted archived journal /var/log/journal/763d2caf072f43a4838ece68a2b5010a/system@ec908698112d428d9c82876cf1f78404-000000000002392b-0006467d60845bf4.journal (128.0M). Vacuuming done, freed 256.0M of archived journals on disk. [root@yyzcdb81 ~]# journalctl --disk-usage Archived and active journals take up 16.0M on disk. [root@yyzcdb81 ~]# [root@yyzcdb81 ~]# journalctl --vacuum-size=500M Vacuuming done, freed 0B of archived journals on disk. [root@yyzcdb81 ~]#
journalctl 是 systemd 時(shí)代不可或缺的日志分析工具。
掌握其核心過濾語法(按時(shí)間、服務(wù)、優(yōu)先級)是高效運(yùn)維的關(guān)鍵。對于復(fù)雜問題,應(yīng)善用組合過濾條件縮小排查范圍。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu定時(shí)執(zhí)行python腳本實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于ubuntu定時(shí)執(zhí)行python腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ubuntu具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Linux系統(tǒng)特殊權(quán)限和通配符及特殊字符使用詳解
本文概述Linux權(quán)限掩碼、SUID/SGID設(shè)置及通配符(如~、.、..)與引號(單/雙引號)的使用區(qū)別,結(jié)合應(yīng)用案例與練習(xí)題,幫助理解文件目錄權(quán)限控制和命令字符串處理技巧2025-08-08
Windows下 Apache PHP 環(huán)境搭建的方法
經(jīng)常在 Linux 環(huán)境下搭建 php 環(huán)境,在 windows 下還是第一次,沒啥技術(shù)含量,就是記錄一下,需要的朋友參考下本教程2017-01-01
ubuntu執(zhí)行sudo apt-get update要很久的解決方案
Ubuntu更新緩慢或報(bào)錯(cuò)因默認(rèn)使用外國鏡像,可通過更換國內(nèi)源(如阿里云、華為云、清華等)或選擇最佳服務(wù)器優(yōu)化,操作包括修改下載源、授權(quán)、重新載入,提升下載速度和穩(wěn)定性2025-09-09
在CentOS 6 中安裝WordPress(一) 安裝Apache,Mysql, PHP環(huán)境
最近做個(gè)項(xiàng)目,拿到一臺CentOS 6服務(wù)器,需要在上面配置php環(huán)境,并安裝WordPress,我們先來看看第一步,配置AMP(Apache,Mysql, PHP)環(huán)境2014-06-06

