在大多數 Linux 系統中,核心轉儲文件(core dump)通常由系統自動保存在當前工作目錄下,或者由配置決定其保存位置。核心轉儲文件的默認文件名通常包含進程 ID(PID)和程序名,例如 core.PID
或 core.程序名
。
查找核心轉儲文件的方法:
-
檢查當前工作目錄:
- 如果進程是在當前工作目錄下運行的,核心轉儲文件可能會保存在該目錄下。
- 使用
ls
命令查看當前目錄下是否有核心轉儲文件:ls -l core.*
-
檢查
coredumpctl
命令:coredumpctl
是 systemd 提供的一個工具,用于管理和檢查核心轉儲文件。- 列出所有可用的核心轉儲文件:
coredumpctl list
- 獲取特定核心轉儲文件的詳細信息:
coredumpctl info [PID]
-
檢查
systemctl
服務狀態:- 如果進程是作為 systemd 服務運行的,可以使用
systemctl
檢查服務的狀態,可能會包含核心轉儲文件的信息。 - 查看服務狀態:
systemctl status 服務名
- 如果進程是作為 systemd 服務運行的,可以使用
-
檢查
/etc/sysctl.conf
配置:- 系統配置文件
/etc/sysctl.conf
中可能包含關于核心轉儲文件的配置。 - 查看配置文件:
cat /etc/sysctl.conf | grep core
- 系統配置文件
-
檢查
/var/lib/systemd/coredump/
目錄:- 在某些系統中,核心轉儲文件可能會保存在
/var/lib/systemd/coredump/
目錄下。 - 查看該目錄:
ls -l /var/lib/systemd/coredump/
- 在某些系統中,核心轉儲文件可能會保存在
-
檢查
ulimit
設置:- 進程的核心轉儲文件大小可能受到
ulimit
設置的限制。 - 查看
ulimit
設置:ulimit -c
- 如果返回值為 0,表示核心轉儲文件被禁用。
- 進程的核心轉儲文件大小可能受到
示例:
假設你已經知道進程 ID(PID)為 912986,可以使用以下命令查找核心轉儲文件:
ls -l /proc/912986/coredump
或者:
coredumpctl info 912986
這些命令將幫助你找到核心轉儲文件的位置和相關信息。找到核心轉儲文件后,可以使用調試工具(如 gdb)進行進一步分析。