Keine Coredumps für Daemons, die beim Booten von init.d unter Ubuntu gestartet wurden

7

Wie kann ich Daemons von init.d beim Booten starten lassen, um sie auf Ubuntu zu sichern? Das habe ich bisher gemacht ...

echo "ulimit -c unlimited" >> /etc/profile
mkdir /corefiles/
chmod 777 /corefiles/
echo "kernel.core_pattern=/corefiles/core.%e.%u.%t" >> /etc/sysctl.conf
echo "fs.suid_dumpable=1" >> /etc/sysctl.conf
echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf
sysctl -p

Dies funktioniert hervorragend für alles außer für einen Daemon, der beim Booten von init.d gestartet wird. Ich verwende Ubuntu 10.04. Ich suche nach einer Lösung, bei der nicht jede daemons init.d-Datei bearbeitet wird.

EDIT: Auch Daemons, die mit sudo gestartet wurden, entleeren sich nicht.

user16517
quelle

Antworten:

4

Warum nicht Apport verwenden ? Es ist standardmäßig auf Nicht-Entwicklungsversionen von Ubuntu deaktiviert, aber es ist weiterhin standardmäßig AFAIK installiert.

JanC
quelle
Apport sieht so aus, als wäre es sehr nützlich. Kann es ohne X.org/gnome verwendet werden, nur mit einem CLI?
user16517
Ja, kein Problem. Bei einem Absturz werden einige Informationen gesammelt, einschließlich eines Absturzabbilds, eines Backtraces usw., und diese werden in eine * .crash-Datei gepackt /var/crash/. Wenn Sie eine GUI haben, überwacht der Update-Manager dieses Verzeichnis und fragt Sie, ob Sie einen Fehler melden möchten. Ohne eine GUI können Sie jedoch einige Tools verwenden . Wenn Sie nur den Coredump wollen, können Sie die * .crash-Datei mit entpacken apport-unpack.
26.
Danke, ich habe die ursprüngliche Einstellung zurückgesetzt und apport aktiviert. Jetzt werden alle Abstürze aufgezeichnet und in / var / crash gespeichert.
user16517
1

/etc/profilewird ausgeführt, wenn sich ein Benutzer für eine interaktive Sitzung anmeldet (und dies hängt auch dann von der Anmeldemethode und der Anmeldeshell ab). Es hat keine Auswirkung auf Daemons, die beim Booten gestartet werden.

Offensichtlich (ich habe nicht getestet, um zu bestätigen) sind Core-Dumps auf Ubuntu 10.04 deaktiviert. Sie können durch Festlegen einer Größenbeschränkung ungleich Null in aktiviert werden /etc/security/limits.conf. limits.confWeitere Informationen finden Sie in den Kommentaren in dieser Datei und in der Manpage. Ich denke, Sie möchten eine Zeile wie hinzufügen

*  soft  core  2000000

Für den Fall, dass Sie nicht mehr weiterkommen möchten

Programme mit erhöhten Rechten geben im Allgemeinen keinen Speicherauszug aus (ich kenne die genaue Regel nicht ganz genau). Dies kann sich auf Prozesse auswirken, die direkt über die Erhöhung von Berechtigungen gestartet werden, z sudo foo. versuchen Sie es sudo sh -c foostattdessen (damit der untergeordnete Prozess auf seiner letzten Berechtigungsstufe startet).

Gilles
quelle
1

/etc/profile wird nur von Ihrer Login-Shell bezogen, nicht von Initscripts.

/etc/security/limits.confwirkt sich auch nur auf Anmeldesitzungen aus, da diese Grenzwerte von festgelegt werden pam_limits.so; von pam_limits manpage:

Das PAM-Modul pam_limits begrenzt die Systemressourcen, die in einer Benutzersitzung abgerufen werden können.

Um das gewünschte Verhalten zu erzielen, müssen Sie das Initscript ändern und Ihren ulimit -c unlimitedBefehl einfügen . Wie Dom bereits erwähnt hat, können Sie dies auch tun, indem Sie die Bibliothek lsb init-functions bearbeiten.

jaq
quelle
0

Ich denke, all diese Optionen werden für die von Ihnen gestarteten Daemons benötigt. Um die Core-Dumps zu erhalten, sollten Sie den Befehl ulimit am Anfang der Startprogramme hinzufügen. Die Launchers sollten / lib / lsb / init-Funktionen verwenden . Sie können es also beliebig ändern. Ich teste hier nichts, also versuche es!

Dom
quelle