getmail und cronjobs

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

getmail und cronjobs

Beitrag von Belgarad » 01.11.2002 20:13:23

habe versucht getmail als cronjob einzutragen.
doch irgendetwas passt da nicht.

habe mit webmin einen neuen cronjob erzeugt, doch dieser job wurde als datei unter:

Code: Alles auswählen

sonne:/var/spool/cron/crontabs# cat root
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXfVx4qe installed on Fri Nov  1 19:42:31 2002)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
5 * * * * getmail  -g /etc/ -r getmailrc
sonne:/var/spool/cron/crontabs#
abgelegt.

das ist doch nicht richtig, oeder?

fuer cron gibt es ja unter /etc verzeichnisse als auch eine crontab. aber ich verstehe den zusammenhang noch nicht.
ich vermute folgendes:
/etc/cron.d:
scripte in diesem verzeichnis muessen einen speziellen aufbau haben, naemlich die zeitangabe fuer cron.

/etc/cron.daily cron.weekly cron.monthly:
scripte in diesem verzeichnis werden taeglich aufgerufen. kein besonderer aufbau.

etc/crontab:
scheint "nur" die anderen cronjobs zu starten (ausser die in cron.d ??).


wo haette ich den job eintragen muessen, wenn er alle 5 minuten abgearbeitet werden sollte.
-ich denke in /etc/cron.d...

und wieso hat webmin den hierher gepackt?

und was bedeutet die datein in /var/spool/cron ?
Zuletzt geändert von Belgarad am 01.11.2002 20:21:40, insgesamt 1-mal geändert.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.11.2002 20:17:30

crontab != cronjob...

Du kannst crontabs einfach mit "crontab -e" editieren. Wenn der Job für root dann da auftaucht, dann ist alles gut. crontabs sind für einzelne User Jobs, während /etc/cron* für System Tasks gedacht ist. Ich nehme an, dass dein getmail da eigentlich besser aufgehoben ist (/etc/cron.d/)

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 01.11.2002 20:23:43

mensch bist du aber schnell. habe meinen beitrag noch editiert.
das getmailrc ist global (also keine userspezifischen getmailrc's) und soll (denke ich) als root laufen, da es ja die mails in die userverzeichnisse schiebt.

macht dass sinn?

+++nachtrag+++
habe crontab -e aufgerufen.
und es wird _nur_ der getmail eintrag angezeigt. offensichtlich ist das der inhalt aus dem o.g. file /var/cron../root

muesste die datein nicht gemaess FHS im verzeichnis /etc liegen?

nur wird der getmail job nicht aufgrufen. habe mit /etc/init.d/cron restart cron neu gestarte, und da ist auch mai geholt worden. nur danach (habe ca. 30minuten gewartet) wurde getmail nicht mehr aufgerufen.
warum?

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.11.2002 20:48:15

Nein, der Kram gehört unter var, weil es veränderliche interne Daten von cron sind. In etc sind nur editierbare Dateien, und die crontabs soll man aus technischen Gründen nicht von Hand editieren.

Nochmal: /etc/cron.d ist für System Tasks. Diese werden als root ausgeführt. conrtab ist für Sachen, die root sozusagen persönliche haben will. Unter Debian ist es normalerweise sinnvoll root's crontab leer zu lassen und alles in /etc/cron.d einzutragen. contabs sind eigentlich in diesem Zusammenhang für User interessant.

crontabs und die Einträge in /etc/cron.* sind 2 verschiedene Sachen...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 01.11.2002 20:56:03

hmm,

ist ganz schoen kompliziert fuer eine "simplen" scheduler :wink:

habe jetzt die /var/spool/cron.../root geloescht und eine neue datei erstellt.
IW /etc/cron.d/getmail Row 1 Col 1 8:50 Ctrl-K H for help
# min -- std -- tag-im-monat -- monat -- wochentag -- benutzer -- befehl -- argumente
# 5 * * * * root getmail -g /etc/ -r getmailrc
0-60/5 * * * * root if [ -x /usr/bin/getmail -a -f /etc/getmailrc ]; then /usr/bin/getmail -g /etc -r getmailrc; fi
das sollte es doch jetzt sein, oder?
Zuletzt geändert von Belgarad am 01.11.2002 21:49:43, insgesamt 1-mal geändert.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.11.2002 21:27:12

Jou, sieht gut aus...
(siehe auch deinen Logrotate Thread ;-))

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 01.11.2002 22:26:28

erstmall vielen dank.

getmail wird nicht ausgefuehrt ....
wenn ich getmail von webmin als cronjob ausfuehre geht es.

habe deshalb zum test noch das folgende script erstellt.

Code: Alles auswählen

   IW   test                                                                                     Row 1    Col 1    9:52  Ctrl-K H for help
# min -- std -- tag-im-monat -- monat -- wochentag -- benutzer -- befehl -- argumente
0-60/2 * * * *     root   echo "hallo admin"
das sollte lt. buch nun all2 min. eine mail an root schicken, da ausgaben von cron via mail geschickt werden.

und obwohl ich von anderen cron jobs wie z.b anachron mails bekomme, tu ich hier nichts. wo ist der (denk)fehler?

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.11.2002 22:46:44

Hmm... ungewöhnlich...

1) Der Dateiname darf nur alphanumerische Zeichen, Underscore und Bindestriche enthalten
2) Die Minutenangabe sollte "0-59/2"lauten. Minute Nummer 60 gibt es nicht.

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 02.11.2002 02:32:09

so, der test-cron-job tuts jetzt. lag ohl an den 60 minuten :wink:

aber getmail will noch nicht, zumindest nicht mit der if-abfrage.

der folgende cronjob geht aus webmin, aber nicht via cron. (der eintrag steht in einer zeile)
wenn ich den befehl (if ...fi) direkt in der console ausfuehre, gehts ebenfalls

Code: Alles auswählen

# min -- std -- tag-im-monat -- monat -- wochentag -- benutzer -- befehl -- argumente
0-59/2 * * * * root if [ -x /usr/bin/getmail -a -f /etc/getmailrc ]; then /usr/bin/getmail -g /etc -r getmailrc ; fi
dieser cronjob (also ohne die if abfrage) geht jedoch:

Code: Alles auswählen

# min -- std -- tag-im-monat -- monat -- wochentag -- benutzer -- befehl -- argumente
0-59/8 * * * * root /usr/bin/getmail -g /etc -r getmailrc
hab auch die leerzeichen etc. geprueft und konnte dabei jedoch nichts feststellen...
dateiattribute sind bei beiden gleich.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 02.11.2002 02:41:46

Das finde ich jetzt aber extrem seltsam... Mein exim cronjob sieht EXAKT so aus, und funktioniert.

Im Zweifelsfall würde ich es ohne die Abfrage machen. Die verhindert nur, dass wenn das Binary weg ist oder die Konfig Datei fehlt, dass der Job anfängt zu meckern. Vielleicht sollte der aber meckern, wenn irgendwas davon fehlt. Bei exim kann ich das verstehen: wenn es das exim binary nicht gibt, sollte man vielleicht nicht versuchen lokale Mails zu versenden...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 02.11.2002 02:46:35

Mir ist da noch was eingefallen...

Man kann die if Zeile auch so konstuieren:

Code: Alles auswählen

test -x /usr/bin/getmail && test -f /etc/getmailrc && /usr/bin/getmail...
Die "&&" bewirken, dass der nächste Befehl nur ausgeführt wird, wenn der vorhergehende fehlerfrei war. test liefert einen Fehler, wenn die Bedingung falsch war...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 04.11.2002 21:34:07

danke,

mit der zeile gehts :D

Antworten