script wird als cronjob anders ausgeführt

A

arduino.cc

Grünschnabel
Hallo Leute

Ich bin neu hier und Scriptanfänger, habe aber von Programmieren (vorw. JAVA) berufliche Erfahrung.

Nun zum Problem; ich hab einen Mailserver am laufen un d möchte dort aber die mailqueue von "MAILER-DAEMON" - Meldungen säubern - was manuell eigentlich gut klappt.

Um das ganze zu automatisieren habe ich ein script geschrieben und führe es als cronjob aus, auch das funktioniert.

Das einzige was nicht funktioniert, ist das auslesen der mailqueue-länge und zwar nur wenn ich das script als cronjob laufen lasse??


Hier mal fakten

Mein Script:

echo "Start Script at $(date)."

ACTUAL_Q_LENGTH=$(postqueue -p | grep "MAILER-DAEMON" | wc -l)
MAXIMAL_Q_LENGTH=3500

echo "aktuell=" $ACTUAL_Q_LENGTH "=" $MAXIMAL_Q_LENGTH

if [ $ACTUAL_Q_LENGTH -gt $MAXIMAL_Q_LENGTH ];
then echo $(mailq | cleanq | grep "MAILER-DAEMON" | awk '{ print $1 }' | postsuper -d -)
fi

echo "Done Script at $(date)."



Aus bash gestartet:

root@myServer:/home/SYSTEM/fja# /home/SYSTEM/fja/remove_all_mailerdaemon.sh

ergibt folgendes Echo:

Start Script at Wed Jul 14 07:13:08 CEST 2010.
aktuell= 1769 und maximal waere 3500
Done Script at Wed Jul 14 07:13:09 CEST 2010.


Eintrag im crontab:

*/5 * * * * /home/SYSTEM/fja/remove_all_mailerdaemon.sh >> /home/SYSTEM/fja/mailerdaemon.log

wird aufgerufen und ergibt folgenden Eintrag im Logfile:


Start Script at Wed Jul 14 07:10:01 CEST 2010.
aktuell= 0 und maximal waere 3500
Done Script at Wed Jul 14 07:10:01 CEST 2010.

obwohl die mailqueue zur laufzeit ganz sicher nicht 0 ist.


Irgendwie wird der befehl $(postqueue -p | grep "MAILER-DAEMON" | wc -l)
wessen Rückgabe (also die anzahl Mails in der Queue mit dem gesuchten Begriff drinn) gleich 0 ist nicht richtig oder gar nicht ausgeführt.

ich seh es nicht...

Bin dankbar um jeden Hinweis ;-)
 
afaik kennt die crontab per default keine Pfade? Probiers mal mit absoluten Pfadangaben zu den Programmen (which postqueue z.Bsp. liefert den zu postqueue)
 
super! Danke daboss, dass war es!

und zwar an beiden Stellen:


ACTUAL_Q_LENGTH=$(postqueue -p | grep "MAILER-DAEMON" | wc -l)

then echo $(mailq | cleanq | grep "MAILER-DAEMON" | awk '{ print $1 }' | postsuper -d -)
 
Zuletzt bearbeitet:

Ähnliche Themen

Script pausieren bis Bedingung erfüllt ist

Crontab und Scripts - Problem

Datei auslesen und fund per MAil versenden.

verzeichniss suche funktioniert nicht

Shellskript - Fehler in Cron

Zurück
Oben