sundriver
Registered User
Hallo @ all,
zu Anfang: OS SuSE9.2 - Apache2.xx Rootserver
Problem:
Jedesmal wenn Confixx ( Prof. Edition.. ) die virtusertable oder das aliases File neu schreiben muss semmelt mir Sendmail ab. Das Problem dabei ist das dass *.pid file in /var/spool/clientmqueue/sm-client.pid stehen bleibt und ein rcsendmail
status somit jedesmal ein "running" ausgibt. Ich habe nun einen Cron eingerichtet der folgendermassen aussieht:
Dieser soll nun alle 10 minuten prüfen ob in /var/run/ noch das sendmail.pid file vorhanden ist ( es ist nach dem Absturz nicht mehr vorhanden ) und soll das Script check-sendmail.sh in /root ausführen.
Das Problem ist hier aber das das Script durch den Cron nicht ausgeführt wird, ein /etc/init.d/cron restart habe ich ausgeführt, alles läuft unter root mit den Rechten 755, das sollte m.E. reichen. Wenn ich das Script von der Shell aus starte funktioniert es bestens, wer von Euch kann mir hier bitte sagen was falsch läuft??
Bin für jede Hilfe Dankbar!
EDIT:
stehe echt vor einem Rätsel wg dem blöden Confixx..
Es ist tatsächlich so, dass nachdem Confixx die o.g. Files neu geschrieben hat ein Scan mit nmap am Port25 keine aktivitäten zeigt und das pid file in /var/run/sendmail.pid nicht existent ist, in /var/spool/clientmqueue/sm-client.pid ist es aber noch existent weshalb wohl ein rcsendmail status ein "running" zurück gibt. Der o.a. Cron erkennt aber irgendwie nicht das, dass zu prüfende pid file nicht existent ist und reagiert deshalb nicht. Erst nach einem rcsendmail stop reagiert der Cron und startet das Script. Ich blick hier nicht mehr durch.. Wie kann ich denn noch prüfen ob Sendmail läuft oder Port 25 aktiv ist? Oder gibt es eine einfache Möglichkeit zu prüfen ob eine der beiden Files, virtusertable und aliases neu geschrieben worden sind um danach dann check-sendmail.sh ausführen??
Ich habe das Script auch noch in einer anderen Version:
aber auch hier funktioniert es auch erst dann wenn ein rcsendmail stop erfolgt ist, es erkennt nicht das sendmail abgesemmelt ist...
bye
Sundriver
zu Anfang: OS SuSE9.2 - Apache2.xx Rootserver
Problem:
Jedesmal wenn Confixx ( Prof. Edition.. ) die virtusertable oder das aliases File neu schreiben muss semmelt mir Sendmail ab. Das Problem dabei ist das dass *.pid file in /var/spool/clientmqueue/sm-client.pid stehen bleibt und ein rcsendmail
status somit jedesmal ein "running" ausgibt. Ich habe nun einen Cron eingerichtet der folgendermassen aussieht:
Code:
# check every 10 minutes if sendmail is still running, if not restart
*/10 * * * * root /sbin/checkproc -p /var/run/sendmail.pid /usr/sbin/sendmail || /root/check-sendmail.sh
Code:
#!/bin/sh
killall sendmail
sleep 2
/etc/init.d/sendmail start
Das Problem ist hier aber das das Script durch den Cron nicht ausgeführt wird, ein /etc/init.d/cron restart habe ich ausgeführt, alles läuft unter root mit den Rechten 755, das sollte m.E. reichen. Wenn ich das Script von der Shell aus starte funktioniert es bestens, wer von Euch kann mir hier bitte sagen was falsch läuft??
Bin für jede Hilfe Dankbar!
EDIT:
stehe echt vor einem Rätsel wg dem blöden Confixx..
Es ist tatsächlich so, dass nachdem Confixx die o.g. Files neu geschrieben hat ein Scan mit nmap am Port25 keine aktivitäten zeigt und das pid file in /var/run/sendmail.pid nicht existent ist, in /var/spool/clientmqueue/sm-client.pid ist es aber noch existent weshalb wohl ein rcsendmail status ein "running" zurück gibt. Der o.a. Cron erkennt aber irgendwie nicht das, dass zu prüfende pid file nicht existent ist und reagiert deshalb nicht. Erst nach einem rcsendmail stop reagiert der Cron und startet das Script. Ich blick hier nicht mehr durch.. Wie kann ich denn noch prüfen ob Sendmail läuft oder Port 25 aktiv ist? Oder gibt es eine einfache Möglichkeit zu prüfen ob eine der beiden Files, virtusertable und aliases neu geschrieben worden sind um danach dann check-sendmail.sh ausführen??
Ich habe das Script auch noch in einer anderen Version:
Code:
#!/bin/sh
msppid=/var/spool/clientmqueue/sm-client.pid
srvpid=/var/run/sendmail.pid
checkproc -p $srvpid /usr/sbin/sendmail || checkproc -p $msppid /usr/sbin/sendmail
if [ $? -ne 0 ] ; then
killproc -p $msppid -TERM /usr/sbin/sendmail
killproc -p $srvpid -TERM /usr/sbin/sendmail
sleep 2
killall sendmail
sleep 2
/etc/init.d/sendmail start
fi
aber auch hier funktioniert es auch erst dann wenn ein rcsendmail stop erfolgt ist, es erkennt nicht das sendmail abgesemmelt ist...
bye
Sundriver
Last edited by a moderator: