deepsys
Goto Top

Ubuntu vServer - regelmäßig gekillte Daemons um 03:03 Uhr

Hallo Kollegen,

ich habe ein Problem mit einen virtuellen Server bei Strato auf dem Ubuntu 12.04.1 LTS.
Bisher war es immer so das nach 2 oder 3 Wochen am Sonntag Morgen gegen 03:03 Uhr oder 03:04 Uhr sämtliche Mail-Dienste (courier-imapd, mailman, spamd, qmail) und ein paar andere Dienste (xinetd, sw-cp-serverd (Parallels Plesk ControlPanel)) sowie dummerweise syslogd gekillt werden.
Ich vermute einen Job der irgendwas aufräumen soll, fnde aber einfach keinen. Weder cron, noch irgendwas bei Plesk.

Heute Nacht um 03:04 ist es, quasi außer der Reihe da ja kein Sonntag, wieder passiert.
Die letzen Logs:

syslog:
Aug  5 02:43:02 h137 qmail: 1375663382.190958 status: local 0/10 remote 0/20
Aug  5 02:53:01 h137 CRON[10669]: (root) CMD ([ -x /usr/local/psa/admin/sbin/backupmng ] && /usr/local/psa/admin/sbin/backupmng >/dev/null 2>&1)
Aug  5 02:54:01 h137 CRON[10674]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Aug  5 02:56:11 h137 statistics: Unable to get dir size of /var/lib/mailman/lists/1
Aug  5 02:56:11 h137 statistics: Unable to get dir size of /var/lib/mailman/archives/private/1.mbox
Aug  5 02:56:11 h137 statistics: Unable to get dir size of /var/lib/mailman/archives/private/1
Aug  5 03:00:02 h137 CRON[13509]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)
Aug  5 03:03:39 h137 spamd[649]: spamd: server killed by SIGTERM, shutting down 
Aug  5 03:03:43 h137 spamd[15835]: logger: removing stderr method 
Aug  5 03:03:46 h137 spamd[15837]: spamd: server started on UNIX domain socket /tmp/spamd_full.sock (running version 3.3.2) 
Aug  5 03:03:46 h137 spamd[15837]: spamd: server pid: 15837 
Aug  5 03:03:46 h137 spamd[15837]: spamd: server successfully spawned child process, pid 15838 
Aug  5 03:03:46 h137 spamd[15837]: prefork: child states: I 
Aug  5 03:03:49 h137 exiting on signal 15

Am Interessantesten ist die Plesk C Error-Datei:
sw-cp-server/tail error_log
2013-08-04 03:03:45: (server.c.1543) server stopped by UID = 0 PID = 5369 
2013-08-04 06:18:04: (log.c.166) server started 
2013-08-05 03:03:49: (server.c.1543) server stopped by UID = 0 PID = 1405 
2013-08-05 19:51:48: (log.c.166) server started 

Gibt es irgendeine Chance herauszufinden welcher root-Prozess mit der angegeben PID das war?
Oder das irgendwie zu loggen?

Ich bin mittlerweile ziemlich ratlos, und da es mitten in der Nacht ist, kann ich auch schlecht mir das um die Zeit angucken ....
Hat da jemand eine Idee, oder kennt das Problem?

Vielen Dank!

Viele Grüße
deepsys

Content-ID: 213412

Url: https://administrator.de/contentid/213412

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

kn0rki
kn0rki 05.08.2013 um 21:06:57 Uhr
Goto Top
moin,

Ich tippe mal auf einen Syslogger der dir um die Uhrzeit die Logdateien rotieren laesst und dazu die Daemons neustartet.
Deepsys
Deepsys 06.08.2013 um 09:56:37 Uhr
Goto Top
Zitat von @kn0rki:
Ich tippe mal auf einen Syslogger der dir um die Uhrzeit die Logdateien rotieren laesst und dazu die Daemons neustartet.
Das denke ich ja auch, nur welcher?
Keiner passt von der Uhrzeit, zumindest nicht da wo ich gesucht habe ...
it-frosch
it-frosch 06.08.2013 um 13:48:07 Uhr
Goto Top
Hi Deepsys,

lass dir doch von 2:55 - 3:10 Uhr jede min oder noch kürzer ps ax in eine Datei schreiben mit Zeitpunkt davor.
Damit kannst du es schon mal eingrenzen.

grüße vom it-frosch
Buk-00
Buk-00 06.08.2013 aktualisiert um 21:08:35 Uhr
Goto Top
Hi deepsys,

probier doch mal dieses Script hier aus... Schreibe einen Cronjob der dieses um 3 Uhr nachts anstößt und wenn Dir die CPU Auslastung zu hoch wird, dann kannst Du ja noch das "sleep 1" auskommentieren... Hoffe das hilft Dir weiter, bin leider auch nich der Erfahrenste, aber ich hab es mal versucht, sollte klappen ;)
Du kannst die while-schleife natürlich noch durch ne for ersetzen, da dieses script ansonsten läuft, bis ein Prozess in der Plesk-Error auftaucht, der zugleich auch in Prozessliste steht.


#!/bin/bash

#Cronjob schreiben, der dieses Script um 3:00 Uhr startet!#

A=`cat "/Pfad der Plesk Error Datei" | egrep -i "server stopped" | tail -n 1 | awk ' { print $12 } '` # PID aus der "Plesk Error Datei"
B=`ps -ef | grep "root" | awk '{ print $8}' | grep $A | wc -l` # Wenn diese PID in ps vorhanden dann B=1

touch $HOME/script.log

while [ $B -lt 1 ]
do

A=`cat "/Pfad der Plesk Error Datei" | egrep -i "server stopped" | tail -n 1 | awk ' { print $12 } '`
B=`ps -ef | grep "root" | awk '{ print $2}' | grep $A | wc -l`
C=`cat $HOME/script.log | wc -l`


echo -e "Der Prozess wurde nicht gekillt `date`\n" >> $HOME/script.log

if [ $C -gt 5000 ] # kleine Sicherung, dass die Datei nicht allzu groß wird...
then

rm $HOME/script.log
touch $HOME/script.log
C=`cat $HOME/script.log | wc -l`

fi
done

D=`ps -ef | grep "root" | awk '{ print $1 $2 $8 }' | grep $A`
echo -e "Der Prozess wurde durch $D gekillt! `date`\n" >> $HOME/script.log

### Ende ###


Gruß
Buk-00
Buk-00 06.08.2013 um 19:09:38 Uhr
Goto Top
Sorry,
habe noch einen Fehler gefunden...

In der If-Anweisung muss diese Zeile noch mal drin stehen:

C=`cat $HOME/script.log | wc -l`

Gruß
Dani
Dani 06.08.2013 um 19:24:44 Uhr
Goto Top
Moin @Buk-00,
  • Bitte nutze unsere Codeformatierungen
  • Bitte nutz die Kommentarbearbeitungsfunktion


Grüße,
Dani
Deepsys
Deepsys 08.08.2013 um 17:49:14 Uhr
Goto Top
Hallo zusammen,

sorry, hatte die letzten Tage keine Zeit dazu.
Ich werde das mit dem Skipt mal versuchen, danke dafür!

Melde mich dann später noch mal ...

VG
Deepsys