動態

詳情 返回 返回

藍易雲cdn:linux環境收集core文件步驟 - 動態 詳情

下面是一套<span style="color:red">Linux 環境收集 core 文件</span>的標準化流程,覆蓋內核參數、會話/系統級限制、systemd 兼容與驗證取證。直接照做,可複製到交付手冊。🧰

一、結論先行

  • 以<span style="color:red">kernel.core_pattern</span>統一落盤路徑與命名;
  • 會話用<span style="color:red">ulimit</span>立刻生效,系統用<span style="color:red">limits.conf / systemd</span>做持久;
  • 若啓用<span style="color:red">systemd-coredump</span>,優先用<span style="color:red">coredumpctl</span>拉取;
  • 取證時務必打包<span style="color:red">二進制+符號表+core</span>,首時間保全。

二、快速配置(最小可用)

sudo sysctl -w kernel.core_pattern=/var/core/%e.%p.%t.core
# 解釋:即時設置 core 文件路徑與命名(程序名.進程號.時間戳),落盤到 /var/core。

ulimit -c unlimited
# 解釋:本會話允許生成不限大小的 core;僅對當前 shell 及其子進程生效。

sudo mkdir -p /var/core && sudo chmod 1777 /var/core
# 解釋:創建存儲目錄並設置粘滯位,避免互相覆蓋與越權刪除。

持久化(兩路擇一或同時)

# 方案A:PAM/會話級(登錄/SSH 生效)
echo '* soft core unlimited' | sudo tee -a /etc/security/limits.conf
echo '* hard core unlimited' | sudo tee -a /etc/security/limits.conf
# 解釋:為所有用户放開 core 軟/硬限制,下次登錄會話生效。

# 方案B:systemd 服務級(守護進程生效)
sudo systemctl edit your.service
# 在彈出文件寫入:
# [Service]
# LimitCORE=infinity
# 解釋:僅作用於該服務,重啓後持續有效。

可選:處理 setuid 程序(謹慎)

sudo sysctl -w fs.suid_dumpable=2
# 解釋:允許對 setuid 程序落盤 core(含隱私風險);僅在必要、隔離環境使用。

三、與 systemd-coredump 配合(若啓用)

coredumpctl list
# 解釋:列出由 systemd 捕獲的崩潰記錄。

coredumpctl dump PID --output=/var/core/app.PID.core
# 解釋:按 PID 導出 core 到指定路徑,便於統一歸檔。

coredumpctl info PID
# 解釋:快速查看元信息(二進制路徑、信號、時間、主機名)。

四、驗證與取證

# 觸發一個樣例 core(示例針對目標進程 PID)
kill -SIGSEGV <PID>
# 解釋:向目標進程發送段錯誤信號,驗證是否按預期落盤 core。

# 基本回溯(無需進入交互式)
gdb /path/to/bin /var/core/app.pid.core -ex 'set pagination off' -ex 'bt' -ex 'info threads' -batch
# 解釋:打印調用棧與線程信息,便於初篩是否有有效符號。

打包歸檔

tar -czf incident_$(date +%s).tar.gz \
  /var/core/*.core /path/to/bin /path/to/bin.debug \
  /etc/security/limits.conf /etc/systemd/system/your.service.d/override.conf \
  <(sysctl -a | grep -E 'kernel.core|fs.suid_dumpable')
# 解釋:一次性收集 core、可執行文件、調試符號、限制配置與關鍵內核參數快照。

五、核心參數/佔位符速查表(vditor/Markdown)

含義 建議值/示例 備註
<span style="color:red">kernel.core_pattern</span> core 文件命名與落盤 /var/core/%e.%p.%t.core %e 程序名、%p PID、%t 時間戳
<span style="color:red">ulimit -c</span> 會話 core 大小限制 unlimited 僅當前會話與其子進程
<span style="color:red">LimitCORE</span> systemd 服務 core 限制 infinity 針對守護進程
<span style="color:red">fs.suid_dumpable</span> setuid 程序是否落盤 0/1/2(默認 0) 2 含隱私風險,慎用

六、標準工作流程(可貼牆上)

[設路徑] sysctl kernel.core_pattern -> 
[放權限] mkdir /var/core & chmod 1777 -> 
[放限制] ulimit/limits.conf 或 systemd LimitCORE -> 
[驗證] kill -SIGSEGV / 人工製造崩潰 -> 
[收集] core + bin + debug + 配置 + sysctl 輸出 -> 
[初篩] gdb 批處理回溯 -> 
[歸檔] tar.gz 入倉/傳遞分析

七、風控與合規

  • 目錄建議單獨掛載並<span style="color:red">容量監控</span>,防止磁盤被 core 撐爆;
  • 含敏感數據的 core 按內控規範<span style="color:red">加密與權限隔離</span>;
  • 生產與預發統一命名規範,納入<span style="color:red">SOP</span>與巡檢腳本。

覆盤:把“能不能生成 core”變成“穩定、可追溯地收集與復現”。從<span style="color:red">路徑</span>、<span style="color:red">限制</span>、<span style="color:red">驗證</span>到<span style="color:red">取證</span>一步不漏,排障效率直接上台階。🚀

user avatar AmbitionGarden 頭像 wy123 頭像 chaochenyinshi 頭像 lvweifu 頭像 tangbo_5f9242f233a7e 頭像 manshenjiroudexiangjiao_bogavh 頭像 yu_670a3980ed436 頭像
點贊 7 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.