Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter? 1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. Außerdem unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs". In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege? 2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren? Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben? 3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt? Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"? Vielen Dank Bernd Stäglich -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
bstaeglich schrieb:
Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter?
1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. Außerdem unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs". In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege?
Erstmal in keins. Dazu gibt es ja das Tool crontab. Dein cronjob wird hinterher unter /var/spool/cron/tabs/<username> liegen.
2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren? Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben?
Wenn du eine bestimmte Uhrzeit willst, genügt cron.daily imho nicht.
3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt? Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"?
Du kannst mit cron Skripte oder mehrere Kommandos, durch Semikolon getrennt, aufrufen. Du gehst dazu folgendermaßen vor. Mit dem Editor deiner Wahl erzeugst du eine Datei. Im Beispiel nenne ich sie "mein.cron". Da hinein schreibst du: m h d M D Befehl Die Kürzel stehen für m=Minute 0-59 h=Stunde 0-23 d=Tag des Monats 1-31 M=Monat des Jahres 1-12 D=Tag der Woche 0-7 Also zum Beispiel täglich um 13 Uhr: 0 13 * * * /home/ich/bin/mein_skript.sh Sonntags um 00:40 40 0 * * 0 /home/ich/bin/sonntag.sh Diese Datei lädst du anschließend folgendermaßen als deine crontab (dabei wird eine evtl. vorhandene crontab gelöscht!): crontab mein.cron Wenn du dir mit dem Umgang sicher genug bist, kannst du auch "crontab -e" verwenden. Da fehlt allerdings der Syntaxcheck, der bei meiner Vorgehensweise dabei ist (finde ich persönlich hilfreich). Den verwendeten Editor für crontab -e setzt du mit der Umgebungsvariable EDITOR (für vi also zB "export EDITOR=vi"). Für weitere cronjobs gehe ich dann so vor: crontab -l > mein.cron vi mein.cron crontab mein.cron "man 5 crontab" ist übrigens vielleicht auch noch hilfreich. HTH Gruß Dominik -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Dominik, vielen Dank für die ausführliche Anleitung. Damit wird es funktionieren. Hatte beim Lesen der pages irgendwie einen Blackout bezüglich des Befehls crontab. Jetzt mit Deiner Anleitung, die ich unten noch mal ungekürzt so gelassen habe, geht's. Ich hab jetzt alles verstanden. Vielen Dank Bernd Am Montag, 20. November 2006 11:04 schrieb Dominik Klein:
bstaeglich schrieb:
Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter?
1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. Außerdem unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs". In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege?
Erstmal in keins. Dazu gibt es ja das Tool crontab. Dein cronjob wird hinterher unter /var/spool/cron/tabs/<username> liegen.
2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren? Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben?
Wenn du eine bestimmte Uhrzeit willst, genügt cron.daily imho nicht.
3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt? Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"?
Du kannst mit cron Skripte oder mehrere Kommandos, durch Semikolon getrennt, aufrufen.
Du gehst dazu folgendermaßen vor.
Mit dem Editor deiner Wahl erzeugst du eine Datei. Im Beispiel nenne ich sie "mein.cron". Da hinein schreibst du:
m h d M D Befehl
Die Kürzel stehen für m=Minute 0-59 h=Stunde 0-23 d=Tag des Monats 1-31 M=Monat des Jahres 1-12 D=Tag der Woche 0-7
Also zum Beispiel täglich um 13 Uhr: 0 13 * * * /home/ich/bin/mein_skript.sh
Sonntags um 00:40 40 0 * * 0 /home/ich/bin/sonntag.sh
Diese Datei lädst du anschließend folgendermaßen als deine crontab (dabei wird eine evtl. vorhandene crontab gelöscht!): crontab mein.cron
Wenn du dir mit dem Umgang sicher genug bist, kannst du auch "crontab -e" verwenden. Da fehlt allerdings der Syntaxcheck, der bei meiner Vorgehensweise dabei ist (finde ich persönlich hilfreich). Den verwendeten Editor für crontab -e setzt du mit der Umgebungsvariable EDITOR (für vi also zB "export EDITOR=vi").
Für weitere cronjobs gehe ich dann so vor: crontab -l > mein.cron vi mein.cron crontab mein.cron
"man 5 crontab" ist übrigens vielleicht auch noch hilfreich.
HTH
Gruß Dominik -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 20. November 2006 10:51 schrieb bstaeglich:
Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter?
1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. Außerdem unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs". In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege?
2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren? Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben?
3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt? Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"?
Vielen Dank
Bernd Stäglich Hallo Bernd,
falls Du KDE verwendest, empfehle ich kcron aus dem kdeadmin3 Paket. Damit bekommt man die Cron-Aufrufe per GUI eingerichtet. Viele Grüße Steffen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 20. November 2006 10:51 schrieb bstaeglich:
Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter?
einfach die Datei $HOME/.crontab gemäß man-Page editieren, z.B. -------------------- # crontab SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=XXXX # minute 0-59 # hour 0-23 # day of month 0-31 # month 0-12 (or names, see below) # day of week 0-7 0 2 * * sat /home/XXXX/do-some-job -------------------------- Dann noch ein crontab $HOME/.crontab absetzen, und ggf mit cronttab -l anschauen, ob's auch wirklich eingetragen ist. Nun wird also immer Samstags um, 2:00 morgens der Job do-some-job ausgeführt. Die Ausgabe (falls vorhanden) wird an den Benutzer XXXX per mail geschickt. Damit das funktioniert, muß der Rechner natürlich Samstags um 2:00 Uhr auch laufen. Dieser Job wird als User XXXX, d.h. mit dessen Rechten ausgeführt. Falls der rechner nicht "durchläuft", dann gibt's die /etc/cron.X Verzeichnisse.
1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. hier kann was(einScript) 'rein legen. Das wird dann (glaub' ich) als root ausgeführt. Also Obacht!
Außerdem unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs".
In diese Verzeichnisse legt crontab seine Dateien ab. Nicht manuell ändern! z.B. /var/spool/cront/tabs/XXXX enthält eine Kopie der aktuell gültigen crontab - Datei (s.o.) des Benutzers XXXX
In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege?
2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren?
Das hängt im wesentlichen davon, ob der Rechner dauernd (oder zuminest zu den nötigen Zeiten) läuft oder nicht. Wenn ja, dann ist $HOME/.crontab die Methode der Wahl, da man die volle Kontrolle über den Zeitpunkt hat. Wenn ein Job eben irgendwann, aber mindestens einmal täglich laufen soll, dann ist /etc/cron.daily etc. die Methode der Wahl. Hier wird aber eben nur sichergestellt, daß der job einmal am Tag ausgeführt wird (sofern der rechner eben einaml am Tag an ist :-)
Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben? gar nicht.
3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt? Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"?
am besten schreibt man komplexere Befehle in eine eigene Datei, und führt diese dann zum gewünschten Zeitpunkt aus. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Am Montag, 20. November 2006 10:51 schrieb bstaeglich:
Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter?
1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. Außerdem unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs". In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege?
2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren? Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben?
3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt? Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"?
Vielen Dank
Bernd Stäglich Hallo Bernd, falls Du noch ne GUI suchst nimm doch einfach "KCron". Damit klappt es bei mir wunderbar. Gruß Dirk -- SuSE Linux 10.x, KMail 1.9, GPG 1.2x
Hallo Ihr alle, die Ihr mir geantwortet habt, jetzt endgültig noch mal vielen Dank Eure tollen Tipps! Am Montag, 20. November 2006 11:34 schrieb Dirk Brzezniak:
Am Montag, 20. November 2006 10:51 schrieb bstaeglich:
Hallo Liste, irgendwie sind mir die man-pages bezüglich cron und crontab zu undurchsichtig. Nun weiß ich zwar, wie ich etwas genau auf eine Uhrzeit festlegen kann, aber wie geht es dann weiter?
[...] Hallo Bernd, falls Du noch ne GUI suchst nimm doch einfach "KCron". Damit klappt es bei mir wunderbar. Gruß Dirk
also das shellmäßige klappt inzwischen bei mir auch schon, aber eine GUI hatte ich tatsächlich gesucht, weil mir sowas letztlich doch immer das Liebste und Bequemste ist, obwohl ich ja weiß, dass auf der Konsole eigentlich alles viel schneller geht, wenn man es erst mal drauf hat ;-) Von Kcron hatte ich irgendwie früher schon mal gehört, es auch gesucht, aber nie gefunden, bis jetzt noch mal der Hinweis von Euch und der Tipp kam, dass das GUI in kdeadmin3 zu finden ist. Vielen Dank :-) Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 20 Nov 2006, bstaeglich schrieb:
1. Bei SUSE 10.1 gibt es dazu die Verzeichnisse /etc/cron.d, /etc/cron.daily, /etc/cron.hourly. Außerdem
In diese Verzeichnisse koennen System-scripte gelegt werden, die dann stuendlich, taeglich oder monatlich ausgefuehrt werden. In denen haben normale User nix zu suchen. Zu /etc/cron.d muesste ich nachschauen, das ist bei 10.1 leer und 9.1 nicht vorhanden.
unter /var/spool/cron die Unterverzeichnisse "lastrun" und "tabs". In welches Verzeichnis muss ich mich denn nun einklinken, damit ich als user meinen höchstpersönlichen cronjob zum Laufen kriege?
Von denen solltest du die Finger lassen. Die verwaltet cron bzw. crontab.
2. Ich möchte gerne einen täglichen cronjob machen. Genügt es, mein Skript dann in das Verzeichnis "cron.daily" hineinzukopieren?
Fast. Ausfuehrbar muss es auch sein. Aber das solltest du nur mit System-scripten machen. Fuer user: crontab -e Den Editor legst du mit VISUAL bzw. EDITOR fest (=> man 1 crontab).
Wie kriege ich da aber noch meine ganz persönliche Uhrzeit rein in dieses Verzeichnis? Soweit ich gesehen habe enthalten die anderen darin gespeicherten Skripte von SUSE keine besonderen Uhrzeitangaben?
Ja. s.o. Das wird halt "einmal taeglich" ausgefuehrt. Fallst das nicht passt => 'crontab -e'.
3. Muss ich hinter der Uhrzeit meine einzelnen Befehle und gewünschten Prozessabläufe alle hintereinander weg in eine Zeile eintragen - durch Leerzeichen, Komma oder sonstwas getrennt?
RTFM: man 5 crontab The ``sixth'' field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. Also z.B.: 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 5 0 * * * /bin/foo 2>&1; /bin/bar Sinnvoller ist es aber oft, mehrere Befehle in einem script zu verpacken (vgl. das $HOME/bin/daily.job).
Oder kann ich wie bei einfachen von mir selbst in Gang gesetzten Skripten die einzelnen Befehlsfolgen untereinander weg in getrennte Zeilen eintippen? Beispiel: "mount Verzeichnis xyz", "tue das und das", "umount Verzeichnis xyz"?
Eben indem du diese in ein script (~/bin/machwas) verpackst. Achte dabei aber darauf, dass per cron das Environment (v.a. PATH) eingeschraenkt ist. -dnh -- I don't see anything wrong with being arrogant and not at all helpful. -- Paul Tomblin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
bstaeglich
-
David Haller
-
Dirk Brzezniak
-
Dominik Klein
-
Dr. Jürgen Vollmer
-
Steffen Hanne