Segfaulting sırasında apache'den çekirdek dökümü nasıl alınır


13

Bir segfault üretirken apache'den çekirdek dökümü nasıl elde edileceğine dair birçok yerden çevrimiçi talimatları izledim, ancak yine de dökümü oluşturmayı reddediyor.

Sahibim:

  1. Eklenen CoreDumpDirectoryiçine yönergesini httpd.confdosya ve ayarlayın/tmp
  2. Gerçekleştirilen ulimit -c unlimited
  3. Kullanarak dökümler için desen sağladı echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
  4. Ayrıca koştu echo 0 > /proc/sys/kernel/core_uses_pid

Httpd yeniden başlatıldı, ancak yine de dökümü oluşturulmadı.

CentOS 5.8 x64 ile httpd-2.2.3-65.el5.centos.3vephp-5.3.20-13.el5.art

Herhangi bir yardım çok takdir edilecektir!


Apache'nin CoreDumpDirectory yönergesinde belirttiğiniz dosyaya yazma izni var mı? Apache'ye ait olmalıdır.
Valentin Bajrami

Ben kamuya açık yazılabilir / tmp için ayarladım, ama başka bir yerde denemek ve apache için sahiplik vereceğim
chrismcb

Teşekkürler - bu bir dökümü üretmek yaptı, ancak ben yerde koymak değil! Ben set CoreDumpDirectoryetmek /tmp/dumpsve onu dökülmektedir /tmpayıklama ile ilgili ... şimdi
chrismcb

Bunu çözmene sevindim!
Valentin Bajrami

Yanıtlar:


7

Cevabım şudur:

  1. Yönergeyi aşağıdaki gibi ayarlayın

    CoreDumpDirectory /tmp/mycoredump

  2. Dizini oluşturun:

    mkdir -p /tmp/mycoredump

  3. Www-data veya httpd dizinine sahiplik atayın

    chown -R www-data:www-data /tmp/mycoredump

  4. İzinleri şu şekilde ayarlayın:

    chmod 777 /tmp/mycoredump

  5. Apache'yi yeniden başlat:

    service apache2 restart


Evet, hemen hemen bunu yaptım, ama /tmpyine de içine dökülmeye başladı!
chrismcb

6
Asla hiçbir chmod 777şey için iyi bir fikir değil
sendmoreinfo

1
@sendmoreinfo Peki ya kullanım durumunuz dış dünya için tamamen değiştirilebilir ve yürütülebilir bir şey yapıyorsa? ;-)
avgvstvs

8
Kendinizi ayağınızdan vurmanıza izin verilir, sadece bunu vaaz etmeyin.
sendmoreinfo

0

Dikkat edin, eğer varsa PrivateTmp=truesizin ayarlanan /usr/lib/systemd/system/apache2.service(ya da her ne sisteminizde denir) Apache yani aslında arar /tmpgibi içeri bir şey /tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/Apache o dir yazma mümkün olmayacaktır ve çekirdekler tüm atılmış almazsınız, (nedeniyle için systemdtmp dizinine 700 kök sadece perma sahip).

Çözüm, PrivateTmp=falsesunucu başladıktan sonra systemd tmp dizininin iznini ayarlamak veya değiştirmek.

Nihayet sorunun ne olduğunu anlamak için saatlerce boşa harcadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.