jahlives
Benutzer
- Mitglied seit
- 19. Aug 2008
- Beiträge
- 18.275
- Punkte für Reaktionen
- 4
- Punkte
- 0
Habe mal noch ein bisschen weitergemacht, weil ich das Script auch für meinen Server verwenden will.
Die Option force ist raus, weil das Script jetzt wirklich endlos läuft und damit selber prüfen muss wann es Zeit ist das Abholen der Emails zu erzwingen auch wenn kein Client mehr verbunden ist
Wenn ein Client verbunden ist, wird alle 60s das getmail.sh ausgeführt und die Emailkonten werden abgefragt.
Wenn kein Client verbunden ist, dann prüft das Script jede Sekunde ob ein Client da ist und nach 3600s (1h) werden in jedem Fall die Konten geleert. Ob ein Client da ist oder nicht ist dann egal.
Die Wartezeit von 1s wenn kein Client da ist, ist etwas kurz. Für die nächsten Tage lasse ich das Script mal mit 1s laufen (so als kleiner Lasttest)
Wichtig: Die Variable pfad_getmail musst du noch anpassen, so dass der Pfad zu DEINEM getmail korrekt ist
@all
Weiss eigentlich jemand ob es eine eine maximale PID gibt? Oder ist das nach oben offen? Weil bei meinem obigen Code bekommt jeder sleep Aufruf eine neue PID. Könnte es damit zu Problemen kommen, wenn das Script sehr lange läuft?
Die Option force ist raus, weil das Script jetzt wirklich endlos läuft und damit selber prüfen muss wann es Zeit ist das Abholen der Emails zu erzwingen auch wenn kein Client mehr verbunden ist
Code:
#!/opt/bin/bash
## HIER DEN PFAD ANPASSEN
pfad_getmail="/pfad/zu/deinem/getmail.sh"
if [ -e /tmp/checkmail ]; then
echo "Code rennt bereits"
exit
fi
if [ "$(whoami)" = "root" ]; then
echo "Code darf NIEMALS unter root laufen. Das gibt Aerger mit dem Dovecot!"
exit
fi
if [ ! -e $pfad_getmail ]; then
echo "$pfad_getmail konnte nicht gefunden werden"
exit
fi
i=0
touch /tmp/checkmail
echo $$ > /tmp/checkmail
while true; do
s=`ps | grep imap | grep -v "imap-login" | grep -v "grep imap"`
if [ "$s" != '' ]; then
i=0
$pfad_getmail &> /dev/null
sleep 60
else
i=`expr $i + 1`
sleep 1
if [ `expr $i % 3600` -eq 0 ]; then
i=0
$pfad_getmail &> /dev/null
fi
fi
done
Wenn kein Client verbunden ist, dann prüft das Script jede Sekunde ob ein Client da ist und nach 3600s (1h) werden in jedem Fall die Konten geleert. Ob ein Client da ist oder nicht ist dann egal.
Die Wartezeit von 1s wenn kein Client da ist, ist etwas kurz. Für die nächsten Tage lasse ich das Script mal mit 1s laufen (so als kleiner Lasttest)
Wichtig: Die Variable pfad_getmail musst du noch anpassen, so dass der Pfad zu DEINEM getmail korrekt ist
@all
Weiss eigentlich jemand ob es eine eine maximale PID gibt? Oder ist das nach oben offen? Weil bei meinem obigen Code bekommt jeder sleep Aufruf eine neue PID. Könnte es damit zu Problemen kommen, wenn das Script sehr lange läuft?