Httpd

segfaulting時如何從apache獲取核心轉儲

  • March 4, 2020

我已按照線上許多位置的說明,了解如何在 apache 產生段錯誤時從 apache 獲取核心轉儲,但它仍然拒絕生成轉儲。

我有:

  1. CoreDumpDirectory將指令添加到httpd.conf文件中並將其設置為/tmp
  2. 執行 ulimit -c unlimited
  3. 提供了使用轉儲的模式 echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
  4. 也跑了 echo 0 > /proc/sys/kernel/core_uses_pid

Httpd 已重新啟動,但仍沒有創建轉儲。

我正在執行 CentOS 5.8 x64httpd-2.2.3-65.el5.centos.3php-5.3.20-13.el5.art

任何幫助將非常感激!

我的回答是這樣的:

  1. 設置指令如下

CoreDumpDirectory /tmp/mycoredump 2. 創建目錄:

mkdir -p /tmp/mycoredump 3. 將所有權分配給目錄 www-data 或 httpd

chown -R www-data:www-data /tmp/mycoredump 4. 將權限設置為:

chmod 777 /tmp/mycoredump 5. 重啟阿帕奇:

service apache2 restart

請注意,如果您已PrivateTmp=true在您的/usr/lib/systemd/system/apache2.service(或系統上呼叫的任何內容)中進行設置,這意味著 Apache 實際上會在/tmp內部查找類似/tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/systemd具有 700 個 root 權限的 tmp 目錄)。

解決方案是在伺服器啟動後設置PrivateTmp=false或修改systemd tmp目錄的權限。

我在這上面浪費了幾個小時,直到現在才終於意識到問題所在。

引用自:https://serverfault.com/questions/470407