Cực kỳ bực bội khi máy tính không hoạt động đúng và bạn không biết tại sao. Mặc dù không có giải pháp dễ cho mọi vấn đề Ubuntu, bạn có thể dùng tài nguyên như log lỗi Ubuntu để troubleshoot và chẩn đoán sự cố PC.
Log Ubuntu là gì?
Log Ubuntu là file toàn diện lưu ghi chép tất cả sự kiện xảy ra trên máy tính. Bao gồm thông tin logged về phần cứng, hệ điều hành, thậm chí một số phần mềm.
Những log này vô giá cho troubleshoot và chẩn đoán. Chúng cung cấp thông tin như timestamp, ngữ cảnh, và chi tiết sâu về sự kiện khắp hệ thống. Để tận dụng log, bạn phải biết các loại quan trọng trước.
Các loại log Ubuntu
Thay vì ghi mọi thông tin vào một log, Ubuntu ghi thông tin trong log riêng cho mục đích khác. Dù log quá nhiều để liệt kê, có vài log quan trọng (và loại log) bạn nên biết trước khi dùng cho troubleshoot.
Có lẽ nổi bật nhất là systemd journal. systemd là service manager không tách rời trong Linux. Kết quả, vấn đề với nhiều dịch vụ OS khác nhau được ghi trong systemd journal. Bạn điều hướng log này với lệnh journalctl.
System log cũng rất quan trọng. Log này trực tiếp liên quan các phần Ubuntu và có thể bao gồm system message. Một số system log:
- Authorization Log: Bất kỳ tiến trình yêu cầu ủy quyền, như sudo hoặc user login, được ghi ở đây.
- Daemon Log: Log liên quan dịch vụ nền (daemon), như Bluetooth và SSH.
- Debug Log: Cung cấp thông tin debug từ hệ thống và app log tới syslogd.
- Kernel Log: Bao gồm record hoạt động liên quan kernel Linux.
- System Log: Lưu record hầu hết hoạt động toàn cục trên hệ thống.
- Fail Log: Lưu record đăng nhập thất bại, đặc biệt hữu ích kiểm tra ai cố gắng xâm nhập hệ thống.
Máy tính cũng có thể có application log (như Apache log, MySQL log) lưu trong /var/log. Dùng ls xem tất cả file log hiện lưu:
ls /var/log
Cách đọc log trên Ubuntu
Giờ bạn quen loại log trên hệ thống, sẵn sàng đào sâu thông tin chúng lưu. Trước khi bắt đầu, quan trọng ghi nhớ không phải tất cả system log viết cùng cách.
Một số log lưu dạng plaintext, log khác lưu binary. Bạn cần quen cả hai loại file - và công cụ command line đi kèm - nếu muốn parse hiệu quả record trên hệ thống.
Plaintext file log dùng template RSYSLOG_TraditionalFileFormat bao gồm bốn trường cơ bản: timestamp, hostname, application, message. Ví dụ kernel log dùng template này:
Khác với plaintext log, binary file log không đọc dễ dàng. Bạn cần tiện ích command line như who, last, lastb đọc log như utmp, wtmp, btmp. Lệnh như utmpdump cho utmp variant và systemctl cho journald cũng thiết kế in thông tin binary log dạng readable.
Trong hầu hết tình huống, biết parse hiệu quả log trong terminal quan trọng. Dùng lệnh như grep và tail lấy thông tin cụ thể mà không đọc lênh lênh toàn bộ system log.
Một số lệnh tốt nhất:
- grep: Tìm chuỗi ký tự trong file
- tail: In 10 dòng cuối file
- head: In 10 dòng đầu file
- sort: In file tổ chức lại theo spec
Công cụ command line như utmpdump và systemctl cũng có flag hữu ích khi làm việc terminal. Flag cho phép sửa đổi lệnh và kiểm soát tốt hơn gì in ra terminal.
Flag đặc biệt hữu ích cho journalctl:
- -b: Chỉ trả về entry sau reboot cuối
- --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS": Chỉ trả về entry trước/sau ngày giờ chỉ định
- -p NUM: Lọc entry theo syslog priority (0/emerg đến 7/debug)
Troubleshoot lỗi với log Ubuntu
Giờ bạn quen loại system log và cách đọc hiệu quả, việc còn lại là áp dụng thông tin thu thập cho troubleshoot. Quá trình này thường cần sáng tạo.
Ý tưởng tốt là tiếp cận troubleshoot bằng cách suy nghĩ đặc điểm nổi bật của vấn đề. Vấn đề xảy ra khi mở app cụ thể? Hệ thống crash reboot mỗi lần vấn đề xảy ra?
Khi suy nghĩ đặc điểm vấn đề, nó tự nhiên dẫn bạn đến log tốt nhất thu thập thông tin. Ví dụ, nếu hệ thống gặp sự cố boot, bạn có thể lấy thông tin hữu ích tham chiếu boot entry trong journald.
Chạy lệnh in tất cả boot logged trong journald:
journalctl --list-boots
Terminal in danh sách boot recorded; boot gần nhất ở dưới. Xem ngày giờ recorded mỗi boot cho đến khi tìm được boot logged có lỗi.
Lấy số cột trái nhất làm NUM chạy lệnh:
journalctl -b -NUM -n
Record toàn diện về boot hiển thị. Nếu lỗi bất thường xảy ra khi boot, dùng thông tin record này tiến xa hơn troubleshoot.
Cùng nguyên tắc áp dụng nhiều vấn đề khác. Nếu không biết nhiều về vấn đề máy tính, khó biết bắt đầu đâu. Có vài log nổi bật đặc biệt hữu ích cho nhiều vấn đề Ubuntu.
syslog là log tốt nhất bắt đầu troubleshoot. Vì nó thực chất global log, rất có thể có thông tin về vấn đề bạn gặp. Nếu gặp sự cố authentication (ví dụ sudo password not working) hoặc boot, check auth.log hoặc boot.log.
Tìm kiếm qua log liên quan nhất với từ khóa liên quan vấn đề. Ví dụ, vấn đề authentication, pull record từ auth.log:
cat /var/log/auth.log | grep 'Authentication failure'
Cuối cùng, bạn chắc chắn tìm thấy thông tin insight tuyệt vời. Khi ghép thông tin error log với tìm kiếm web, bạn rất có thể tìm resource giúp giải quyết sự cố hệ thống trong chớp mắt.
Tham khảo tài nguyên online troubleshoot lỗi Linux
Bạn không phải troubleshoot một mình. Khi thu thập thông tin vấn đề máy tính, dùng tài nguyên online như Ask Ubuntu và hướng dẫn chi tiết MakeUseOf để gần hơn chẩn đoán và sửa PC.