Sử dụng Journalctl để đọc system log trên Linux

Trong nhiều năm qua, system log (nhật ký hệ thống) và kernel log (nhật ký hạt nhân) đã được xử lý bởi một tiện ích gọi là syslogd. Hầu hết các hệ điều hành dựa trên Linux đã chuyển sang systemd, đi kèm với một log daemon khác với tên gọi journald. Để tương tác với các log này, bạn hãy sử dụng tiện ích journalctl.

Cấp quyền cho người dùng để đọc nhật ký hệ thống

Chỉ những người dùng thuộc nhóm “adm” hoặc “systemd-journal” mới có thể đọc các log systemd. Các bản phân phối như Ubuntu đã cho phép thêm user vào nhóm adm.

Mở một trình giả lập terminal và gõ lệnh sau:

groups

Groups

Nếu bạn nhìn thấy “adm” hoặc “systemd-journal” trong phần output, bạn có thể bỏ qua các bước còn lại trong phần này. Nếu không, hãy thêm chính mình vào nhóm “adm”.

sudo adduser $USER adm

Bạn sẽ phải khởi động lại phiên đăng nhập để những thay đổi này có hiệu lực (đăng xuất và đăng nhập). Nếu bạn không thể làm điều đó vì nhiều lý do, hãy sử dụng lệnh này để đăng nhập vào nhóm mới mà không cần khởi động lại phiên đồ họa:

newgrp adm

Đừng đóng cửa sổ terminal. Bây giờ, bạn đã ở trong nhóm adm, tại phiên terminal hiện tại, nhưng không phải trong phiên đồ họa. Nếu bạn mở một terminal mới tại thời điểm này, bạn sẽ không thể đăng nhập vào nhóm adm nữa.

Kiểm tra tính liên tục của nhật ký

Các bản ghi systemd log có thể ghi liên tục hoặc ngắt quãng. Trên Ubuntu và các bản phân phối khác, theo mặc định, chúng sẽ liên tục. Trên Debian 9, các bản log không được ghi liên tục, có nghĩa là chúng chỉ được lưu trong bộ nhớ (không phải ổ đĩa) và biến mất khi người dùng tắt máy hoặc khởi động lại. Hãy nhập lệnh sau:

journalctl --list-boots

Kiểm tra tính liên tục

Nếu có nhiều mục nhập ở đây, thì bạn không phải làm gì thêm. Điều đó có nghĩa là các nhật ký được lưu trên ổ đĩa (liên tục). Nếu bạn chỉ nhận được một mục nhập duy nhất, thì nhật ký không được ghi liên tục. Hãy thay đổi để nó được ghi liên tục.

sudo sed -i '/Storage/ c\Storage=persistent' /etc/systemd/journald.conf

Chọn xem nhật ký boot entry

Thông thường, bạn sẽ muốn xem log cho lần boot hiện tại. Đôi khi bạn muốn xem thông tin về lần boot trước, ví như sau khi sự cố hệ thống xảy ra. Nhưng điều này không thường xuyên xảy ra lắm.

Để xem nhật ký cho lần boot hiện tại:

journalctl -b 0

Xem boot entry

Đối với lần boot trước, hãy sử dụng “-1” thay vì “0”, hoặc cho hai lần boot trước là “-2”, v.v...

journalctl -b -1

Điều hướng và tìm kiếm thông qua System Journal

Sau khi bạn mở log bằng journalctl, bạn có thể điều hướng qua văn bản bằng các phím mũi tên và phím PAGE UP hoặc PAGE DOWN. Các phím hữu ích khác là:

  • > để đi đến phần cuối của output.
  • < để đi đến phần đầu của output.
  • / để tìm kiếm một chuỗi văn bản. Sau khi bạn nhấn phím gạch chéo, hãy nhập chuỗi muốn tìm, sau đó nhấn Enter. Chuỗi này phân biệt chữ hoa chữ thường, do đó, “network” sẽ khác với “Network”. Hãy tìm kiếm bắt đầu từ vị trí xem hiện tại hướng xuống dưới. Để tìm kiếm theo chiều hướng lên, hãy sử dụng ký tự ?.
  • n tìm kết quả trùng khớp tiếp theo trong thao tác tìm kiếm hiện tại. N tìm kết quả trùng khớp trước đó.
  • q thoát khỏi tiện ích journalctl.

Điều hướng

Lọc các mục nhập log theo mức độ ưu tiên

Đôi khi bạn chỉ muốn tìm kiếm lỗi, bỏ qua các ghi chú và thông báo trạng thái. Mỗi mục trong log có một mức ưu tiên khác nhau: emergency, alert, critical, error, warning, notice, info (khẩn cấp, thông báo quan trọng, quan trọng, lỗi, cảnh báo, thông báo, thông tin). Chúng được liệt kê theo thứ tự quan trọng. Trạng thái emergency (khẩn cấp) được dành riêng cho các trường hợp xấu nhất (hệ thống không hoạt động được nữa). Các Info message chỉ là văn bản thông tin, báo cáo trạng thái của các chương trình hoạt động bình thường.

Để chỉ hiển thị thông báo lỗi từ lần boot hiện tại, hãy nhập:

journalctl -b 0 -p err

Lọc các mục nhập

Nếu bạn muốn thấy lỗi từ tất cả các lần boot, chỉ cần xóa tham số “-b”:

journalctl -p err

Đây là những code bạn có thể chuyển đến tham số của “-p”:

  • alert
  • crit
  • debug
  • emerg
  • err
  • info
  • notice
  • warning

Lọc mục nhập log theo đường dẫn để xử lý file thực thi hoặc Systemd unit

Một số tiến trình được bắt đầu và quản lý bởi các unit được gọi là systemd. Để xem tất cả các bản ghi liên quan đến cron service unit, hãy nhập:

journalctl -u cron.service

Bạn có thể xem những unit có sẵn bằng lệnh:

systemctl list-dependencies

Lọc theo đường dẫn

Bạn có thể điều hướng danh sách bằng các phím mũi tên lên và xuống. Nhấn q để thoát.

Nếu bạn muốn sử dụng đường dẫn đến file thực thi (file nhị phân) của chương trình, chỉ cần chuyển đường dẫn đầy đủ của nó làm đối số.

journalctl /usr/sbin/cron

Đừng quên, bạn cũng có thể lọc theo mục boot hiện tại để loại bỏ các thông báo không cần thiết.

journalctl -b 0 /usr/sbin/cron

Journalctl nhằm mục đích giúp bạn dễ dàng tìm thấy những gì bạn đang tìm kiếm. Hy vọng bạn sẽ cảm thấy những thông tin trên hữu ích. Chúc bạn thành công!

Xem thêm:

Thứ Ba, 18/12/2018 14:23
51 👨 3.911
0 Bình luận
Sắp xếp theo
    ❖ Linux