Linux Minimal系統調試方法
日志是Minimal系統調試的核心工具,系統會將啟動、服務運行、硬件交互等信息記錄到日志文件中,通過分析日志可快速定位問題根源。
/var/log/messages
:記錄系統一般消息(如內核、服務狀態);/var/log/syslog
:記錄系統日志(包含用戶級服務信息);/var/log/kern.log
:記錄內核相關消息(如硬件驅動加載);/var/log/boot.log
:記錄系統啟動過程的詳細信息。cat
(查看完整文件)、tail -f
(實時跟蹤最新日志)、grep "關鍵詞" 文件名
(過濾特定內容,如grep "error" /var/log/syslog
)命令查看日志。journalctl
可集中管理日志,支持按服務、時間、優先級過濾:
journalctl
:查看所有日志;journalctl -b
:查看當前啟動會話的日志;journalctl -b -1
:查看上一次啟動的日志;journalctl -u nginx
:查看nginx服務的日志;journalctl -p err
:僅顯示錯誤級別日志;journalctl --since "1 hour ago"
:查看過去1小時的日志。對于編譯型程序(如C/C++),需通過調試器查看程序運行時的變量、調用棧等信息;對于腳本程序(如Python),可使用內置調試器或日志增強。
-g
選項的可執行文件(如gcc -g test.c -o test
),基本命令:
gdb ./test
:啟動GDB并加載程序;break main
:在main
函數處設置斷點;run
:運行程序(帶參數可寫為run arg1 arg2
);next
(或n
):單步執行(跳過函數調用);step
(或s
):單步進入函數;print 變量名
:打印變量值(如print num1
);backtrace
(或bt
):查看函數調用棧(定位錯誤發生的位置)。strace ls
),常用選項:
strace -p PID
:跟蹤指定進程(如strace -p 1234
);strace -e trace=open,read
:僅跟蹤open
和read
系統調用。valgrind --leak-check=full ./test
),輸出結果會顯示內存泄漏的位置和大小,適合C/C++程序。logging
模塊添加日志(如logging.debug("變量值:%s", var)
),或使用pdb
調試器(在代碼中插入import pdb; pdb.set_trace()
,運行后進入交互式調試)。Minimal系統資源有限,通過監控工具可查看CPU、內存、磁盤等資源的使用情況,定位性能瓶頸或資源耗盡問題。
top
:實時顯示進程的CPU、內存占用率(按q
退出,按M
按內存排序,按P
按CPU排序);htop
:更直觀的top
替代工具(需安裝,如sudo apt install htop
)。free -h
,顯示人類可讀的單位)。df -h
,顯示各分區剩余空間)。vmstat 1
,每秒刷新一次,顯示CPU、內存、IO等指標)。Minimal系統通常用于服務器或嵌入式設備,硬件故障可能導致系統不穩定,需通過以下工具排查:
lspci
,顯示顯卡、網卡等設備型號);lsusb
,顯示U盤、鼠標等設備信息);fdisk -l
,顯示磁盤分區表);sudo smartctl -a /dev/sda
,顯示硬盤SMART信息,包括壞道、溫度等)。若問題與內核相關(如啟動黑屏、驅動崩潰),需啟用內核調試功能或使用專用工具:
linux
行添加debug
(開啟內核調試信息)或nokaslr
(關閉地址空間隨機化,便于調試),例如:linux /boot/vmlinuz-xxx root=/dev/sda1 debug nokaslr
。