Sổ tay kỹ thuật

journalctl – đọc log systemd

cheatsheet#linux#systemd#logging· cập nhật 2026-11-06

Tra nhanh lệnh journalctl để lọc log theo unit, thời gian, mức độ, boot, xuất JSON và dọn dung lượng journal.

Sửa trang này
Mục lục

Journal chỉ bền qua reboot khi có thư mục /var/log/journal (mặc định trên Ubuntu). User thường cần nằm trong group systemd-journal hoặc adm để đọc log hệ thống. Các flag lọc kết hợp được với nhau.

Lọc theo nguồn

Mục đích Lệnh
Log một service journalctl -u nginx
Nhiều unit / theo pattern journalctl -u nginx -u php8.1-fpm / journalctl -u 'docker*'
Theo dõi realtime journalctl -u nginx -f
100 dòng cuối, không pager journalctl -u nginx -n 100 --no-pager
Theo syslog identifier (tag) journalctl -t sshd
Theo binary journalctl /usr/sbin/sshd
Theo PID journalctl _PID=1234
Log kernel (như dmesg) journalctl -k
User unit (systemctl --user) journalctl --user -u myapp

Lọc theo thời gian và boot

Mục đích Lệnh
Từ 1 giờ trước journalctl --since "1 hour ago"
Khoảng thời gian journalctl --since "2026-11-06 08:00" --until "2026-11-06 09:30"
Hôm nay / hôm qua journalctl --since today / journalctl --since yesterday --until today
Boot hiện tại journalctl -b
Boot trước (xem vì sao máy reboot/crash) journalctl -b -1 -e
Danh sách các boot journalctl --list-boots
Mới nhất trước journalctl -r
Nhảy tới cuối trong pager journalctl -u nginx -e

Lọc theo nội dung và mức độ

Mục đích Lệnh
Chỉ error trở lên journalctl -p err -b
Khoảng mức độ (warning → err) journalctl -p warning..err
Grep trong MESSAGE (regex PCRE2) journalctl -u sshd -g 'Failed password'
Grep không phân biệt hoa thường journalctl -g 'oom' --case-sensitive=false
OOM killer journalctl -k -g 'Out of memory|oom-kill'
Kèm giải thích từ catalog journalctl -xeu nginx

Mức độ: emerg(0) alert(1) crit(2) err(3) warning(4) notice(5) info(6) debug(7). -p err lấy từ 0 tới 3.

Định dạng output

Mục đích Lệnh
Chỉ message, không prefix journalctl -u app -o cat
Timestamp ISO 8601 journalctl -o short-iso
Có microsecond journalctl -o short-precise
JSON mỗi dòng (để jq) journalctl -u app -o json | jq -r '.MESSAGE'
Mọi field của entry journalctl -u app -n 1 -o verbose
Giờ UTC journalctl --utc
Các field đang có / giá trị của field journalctl -N / journalctl -F _SYSTEMD_UNIT

Dung lượng và bảo trì

Mục đích Lệnh
Journal đang chiếm bao nhiêu journalctl --disk-usage
Giảm xuống dưới 500 MB sudo journalctl --vacuum-size=500M
Xoá log cũ hơn 2 tuần sudo journalctl --vacuum-time=2weeks
Ép rotate rồi mới vacuum (file active không bị xoá) sudo journalctl --rotate && sudo journalctl --vacuum-time=1d
Kiểm tra file hỏng journalctl --verify
Đọc journal copy từ máy khác journalctl -D /path/to/journal / journalctl --file system.journal

Giới hạn cố định đặt trong /etc/systemd/journald.conf (hoặc drop-in /etc/systemd/journald.conf.d/*.conf):

/etc/systemd/journald.conf.d/size.conf
[Journal]
SystemMaxUse=1G
MaxRetentionSec=1month
sudo systemctl restart systemd-journald

Service fail mà không rõ lý do: systemctl status <unit> chỉ hiện vài dòng; dùng journalctl -u <unit> -b -n 200 --no-pager để thấy đủ. Xem thêm systemd service.