Marc Reichelt: Problem halb gelöst, aber weiteres Problem entdeckt

Beitrag lesen

Hallo Sven,

tut nichts zur Sache, also nur nebenbei: Diese Annahme ist falsch. Sind N Prozesse erzeugt worden, fährt das OS mit einer niedrigen Nummerierung fort.

Logischerweise. Aber dies ist im betrachteten Zeitraum sehr unwahrscheinlich.

Das würde ich nicht unbedingt sagen.

Es gibt zwei Fälle, in denen diese Annahme scheitert:

  1. Es gibt schon in normalen Kerneln eine maximale PID, Werte darüber sind nicht erlaubt, es wird die nächste freie PID gesucht, die ab 1 wieder verfügbar ist. Die Wahrscheinlichkeit ist nach längerer Uptime des Servers durchaus als hoch anzusehen.

  2. Gehärtete Kernel vergeben die PIDs unter Umständen nach einem Zufallsprinzip, um es Angreifern nicht zu erlauben, auf vorhersehbare PIDs zu treffen.

Stimmt, so habe ich das noch gar nicht betrachtet. Aber wie du bereits schriebst:

Da dein Skript alle PIDs betrachtet, und keine Annahmen über ein Maximum oder Minimum trifft, hat dieses Detail keinen Einfluß.

Genau so ist es. :)
Das einzige Problem, das auftreten könnte, ist eben dass zwischen dem Ermitteln der PIDs und dem Neustart-Signal an den Apache neue Apache-Prozesse dazukommen könnten - die dann nicht überwacht werden.
Daher habe ich noch 30 Sekunden Wartezeit eingebaut (die man ja auch noch variieren kann) - eine 100%ige Sicherheit gibt es hier trotzdem nicht.

Bevor ich vergesse, das noch zu erwähnen - wer es noch nicht durch Lesen des Skriptes herausgefunden hat:

Die Log-Dateien müssen "access_log" und "error_log" heißen, und sie müssen alle in folgenden Ordnern liegen:

/var/www/<Ordner>/logs/

Dies habe ich so eingerichtet, da ich bei mir eine VirtualHost-Umgebung mit Ordnern der Form
/var/www/example.com/htdocs/
und
/var/www/example.com/logs/
eingerichtet habe.
Lässt sich aber natürlich leicht an eure Bedürfnisse anpassen. :-)

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
panic("Oh boy, that early out of memory?");
        linux-2.2.16/arch/mips/mm/init.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)