溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下journalctl命令怎么使用

發布時間:2022-02-18 14:47:07 來源:億速云 閱讀:894 作者:iii 欄目:開發技術
# Linux下journalctl命令怎么使用

## 一、journalctl簡介

`journalctl`是Linux系統中用于查詢和顯示systemd日志的強大工具。作為systemd生態系統的一部分,它提供了對系統日志的統一查看方式,替代了傳統的syslog服務。

### 1.1 journalctl與傳統日志系統的區別

| 特性        | 傳統syslog               | journalctl                  |
|------------|-------------------------|----------------------------|
| 存儲格式     | 純文本文件               | 二進制索引格式               |
| 日志存儲位置 | /var/log/目錄下多個文件  | 集中存儲在/run/log/journal/ |
| 查詢能力     | 需結合grep等工具         | 內置強大過濾和查詢功能       |
| 元數據支持   | 有限                    | 豐富的元數據(如單元、PID等)|

### 1.2 journald服務

journalctl實際上是與`systemd-journald`服務交互的前端工具。該服務在系統啟動早期就開始運行,能夠收集內核、早期啟動過程以及所有系統服務的日志。

查看服務狀態:
```bash
systemctl status systemd-journald

二、基本使用方法

2.1 查看完整日志

不加任何參數時,顯示所有日志記錄:

journalctl

輸出示例:

-- Logs begin at Mon 2023-05-01 09:00:00 CST, end at Wed 2023-05-03 15:30:45 CST. --
May 01 09:00:01 server01 systemd[1]: Starting Daily apt upgrade and clean activities...
May 01 09:00:15 server01 systemd[1]: Started Daily apt upgrade and clean activities.
...

2.2 實時監控新日志

類似于tail -f的功能:

journalctl -f

2.3 按時間篩選

查看特定時間段的日志:

# 查看今天日志
journalctl --since today

# 查看最近2小時日志
journalctl --since "2 hours ago"

# 指定時間范圍
journalctl --since "2023-05-01 14:00:00" --until "2023-05-01 15:30:00"

時間格式支持: - “YYYY-MM-DD HH:MM:SS” - “yesterday”, “today”, “tomorrow” - “-1h” (1小時前) - “1 week ago”

2.4 按服務/單元篩選

查看特定systemd單元的日志:

# 查看sshd服務日志
journalctl -u sshd

# 查看多個服務
journalctl -u nginx -u mysql

# 查看服務從啟動開始的完整日志
journalctl -u apache2 -b

2.5 按優先級過濾

使用優先級(Priority)過濾日志,優先級定義如下:

數值 優先級 說明
0 emerg 緊急/系統不可用
1 alert 需要立即采取行動
2 crit 嚴重情況
3 err 錯誤條件
4 warn 警告條件
5 notice 正常但重要的情況
6 info 信息性消息
7 debug 調試級消息

示例:

# 只顯示錯誤及以上級別
journalctl -p err -b

# 顯示警告到錯誤級別
journalctl -p warn..err

三、高級查詢技巧

3.1 按進程ID過濾

# 查看指定PID的日志
journalctl _PID=1234

# 查看父進程為systemd的進程日志
journalctl _PPID=1

3.2 按用戶/組過濾

# 查看特定用戶進程的日志
journalctl _UID=1000

# 查看root用戶日志
journalctl _UID=0

3.3 按可執行文件路徑過濾

journalctl /usr/sbin/sshd

3.4 組合多個條件

# 組合時間、服務和優先級
journalctl -u nginx --since "1 hour ago" -p err

3.5 顯示內核消息

journalctl -k
# 或
journalctl -k -b  # 本次啟動的內核日志

四、輸出格式控制

4.1 簡潔輸出格式

journalctl -o short

4.2 JSON格式輸出

適合程序解析:

journalctl -o json

4.3 詳細輸出

顯示所有可用字段:

journalctl -o verbose

示例輸出:

Tue 2023-05-02 10:30:15.123456 CST [s=abcdef123456]
    _TRANSPORT=syslog
    PRIORITY=6
    _UID=0
    _GID=0
    _COMM=sshd
    _EXE=/usr/sbin/sshd
    _CMDLINE=sshd: root@pts/0
    MESSAGE=Accepted password for root from 192.168.1.100 port 54322 ssh2

4.4 分頁和行數控制

# 顯示最后20行
journalctl -n 20

# 不顯示分頁
journalctl --no-pager

# 持續輸出新日志(類似tail -f)
journalctl -f

五、日志維護與管理

5.1 查看日志占用的磁盤空間

journalctl --disk-usage

輸出示例:

Archived and active journals take up 1.2G in the file system.

5.2 清理日志

# 只保留最近2天的日志
journalctl --vacuum-time=2d

# 限制日志大小不超過500MB
journalctl --vacuum-size=500M

# 保留最多1000個日志文件
journalctl --vacuum-files=1000

5.3 持久化日志存儲

默認情況下,日志存儲在/run/log/journal/中,重啟后會丟失。要永久保存:

  1. 創建存儲目錄:
sudo mkdir -p /var/log/journal
  1. 設置正確的權限:
sudo chown root:systemd-journal /var/log/journal
sudo chmod 2755 /var/log/journal
  1. 重啟journald服務:
sudo systemctl restart systemd-journald

六、實戰案例

6.1 診斷系統啟動問題

# 查看本次啟動的所有日志
journalctl -b

# 查看上次啟動的日志(如果已保存)
journalctl -b -1

# 查看啟動過程中的錯誤
journalctl -b -p err..alert

6.2 追蹤服務問題

# 查看服務從啟動到現在的完整日志
journalctl -u mysql --no-pager -n 1000

# 實時監控服務日志
journalctl -u nginx -f

6.3 分析用戶登錄情況

# 查看所有SSH登錄
journalctl _COMM=sshd -o verbose | grep "Accepted password"

# 查看特定用戶的登錄
journalctl _COMM=sshd | grep "Accepted publickey for username"

6.4 性能問題排查

# 查看高優先級消息
journalctl -p err..emerg --since "1 hour ago"

# 查看磁盤相關錯誤
journalctl -k | grep -i "disk\|io\|scsi"

七、常見問題解決

7.1 日志顯示不完整

如果發現日志被截斷:

journalctl --no-tail

7.2 時間顯示問題

使用UTC時間:

journalctl --utc

7.3 無法查看歷史日志

確保已啟用持久化存儲(見5.3節),然后檢查:

sudo journalctl --list-boots

7.4 日志損壞修復

sudo journalctl --verify

如果發現損壞:

sudo rm -rf /var/log/journal/*
sudo systemctl restart systemd-journald

八、總結

journalctl作為systemd的日志工具,提供了比傳統syslog更強大的查詢和分析能力。通過熟練掌握各種過濾條件和輸出格式,可以高效地診斷系統問題。關鍵點總結:

  1. 使用時間、單元、優先級等組合過濾條件
  2. 靈活運用各種輸出格式滿足不同需求
  3. 定期維護日志防止磁盤空間耗盡
  4. 重要環境啟用持久化日志存儲

通過本文介紹的各種技巧和實例,您應該能夠充分利用journalctl來監控和排查Linux系統問題。

提示:在生產環境中,考慮將重要日志轉發到遠程日志服務器或ELK等集中式日志管理系統,以實現長期存儲和更復雜的分析需求。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女