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):
[Journal]
SystemMaxUse=1G
MaxRetentionSec=1monthsudo systemctl restart systemd-journaldService 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.