Griaseeichallemidananda! Jusdn wir ahben ein Problem, oder so ähnlich kann ich mein Problemchen beschreiben. In der etc/crontab kann ich schön brav meine regelmäßigen Programme automatisch starten lassen. Das klatt ganz gut z.B. für Hylafax oder ähnliches. Aber ich habe mir da eine kleine Routine gebastelt, die mir meine homepage mit "mehr Leben" füllt. Diese Routing starte ich zur Zeit entweder per Hand, oder durch den Aufruf in der crontab immer um 01:30 Uhr. Nun will ich aber, daß das alles möglichst automatisch abläuft, so z.B. 4x am Tag, z.B. um 02:55 Uhr, 08:55 Uhr, 14:55 Uhr und 20:55 Uhr Soweit ich die crontab verstanden hab, kann ich dies vergessen, wenn ich nun nicht ganz fals gewickelt bin, dann müsste es aber z.B. mit 'at' gehen, oder? Ziel soll sein jeweils um 2:55 Uhr, 08:55 Uhr, 14:55 Uhr und 20:55 Uhr den script "/home/bigchief/omni128.de/tmp/hp-index" ablaufen zu lassen. Reicht es nun wenn ich z.B. versuche per: at 02:55 < /home/bigchief/omni128.de/tmp/hp-index at 08:55 < /home/bigchief/omni128.de/tmp/hp-index at 14:55 < /home/bigchief/omni128.de/tmp/hp-index at 20:55 < /home/bigchief/omni128.de/tmp/hp-index die scripte automatisch starten lasse? So z.B.: bash-2.05# at 20:55 < /home/bigchief/omni128.de/tmp/hp-index warning: commands will be executed using /bin/sh job 1 at 2001-11-01 20:55 mit atq wird mir angezeigt: bash-2.05# atq 1 2001-11-01 20:55 a root bash-2.05# Das ganze läuft aber dann nur 1x am 2001-11-01 um 20:55Uhr, oder? Wenn ich dann nun alles automatisch ablaufen lassen möchte, denke ich mal müsste es doch wie folgt gehen: per crontab den folgenden script jeden Tag um 01:00 Uhr Aufrufen lassen: #!/bin/tcsh at 02:55 < /home/bigchief/omni128.de/tmp/hp-index at 08:55 < /home/bigchief/omni128.de/tmp/hp-index at 14:55 < /home/bigchief/omni128.de/tmp/hp-index at 20:55 < /home/bigchief/omni128.de/tmp/hp-index dann müsste es doch klappen, oder? Pfiadseich! BC -- Michael Nausch Anzinger Str. 20 85586 Poing +49-8121-989810 (voice) +49-8121-971941 (fax) http://omni128.de michael@nausch.org
HAI! da bin ich wieder! ;-) wenn ich nun mit atq mir anzeigen lasse, welche jobs nun laufen, dann sagt mir mein System: 7 2001-11-01 21:22 a bigchief bzw. 7 2001-11-01 21:22 = bigchief O.K. die 7 ist wohl die job-Nummer, dann kommt das Datum und ide Uhrzeit und hinten steht der user, der den job in auftrag gegeben hat, _ABER_ was hat das 'a' bzw. das '=' zu bedeuten? der man-page zu at konnte ich hierzu nichts entnehmen ... -- Michael Nausch Anzinger Str. 20 85586 Poing +49-8121-989810 (voice) +49-8121-971941 (fax) http://omni128.de michael@nausch.org
* Michael Nausch schrieb am 01.Nov.2001:
Soweit ich die crontab verstanden hab, kann ich dies vergessen, wenn ich nun nicht ganz fals gewickelt bin, dann müsste es aber z.B. mit 'at' gehen, oder?
Wieso kannst Du crontab vergessen?
Ziel soll sein jeweils um 2:55 Uhr, 08:55 Uhr, 14:55 Uhr und 20:55 Uhr den script "/home/bigchief/omni128.de/tmp/hp-index" ablaufen zu lassen.
Machs mit /etc/crontab: 55 2,8,14,20 * * * bigchief /home/bigchief/omni128.de/tmp/hp-index Müßte es tun. Ich bin mal davon ausgegangen, daß der User bigchief heißt. 55 2,8,14,20 * * * bedeutet, daß das Skript zur Minute 55 ausgeführt werden soll, und zwar zu den Stunden 2, 8, 14 und 20 also 2:55, 8:55, 14:55 und 20:55 und zwar an jeden Tag, an jeden Monat und an jedem Wochentag. Bernd -- Umsteiger von Microsoft Windows xx? Hast Du schon file://usr/doc/howto/de/DE-DOS-nach-Linux-HOWTO.txt gelesen? Auch file://usr/doc/Books/Linuxhandbuch.dvi ist zu empfehlen. |Zufallssignatur 1
Griasde Bernd! Am Donnerstag, 1. November 2001 21:41 schrieb Bernd Brodesser:
55 2,8,14,20 * * *
bedeutet, daß das Skript zur Minute 55 ausgeführt werden soll, und zwar zu den Stunden 2, 8, 14 und 20 also 2:55, 8:55, 14:55 und 20:55 und zwar an jeden Tag, an jeden Monat und an jedem Wochentag.
Hey das ist aj einfach, ich hatte nun den umweg über at gemacht, aber wenn das mit der "2,8,14,20"-Angabe auch geht, dann ist das natürlich noch viel einfacher. Mal sehen, obn's klappt, aber was soll die Frage, wenn Du das sagst, dann wird's schon stimmen ... ;-) Pfiade, BC -- Michael Nausch Anzinger Str. 20 85586 Poing +49-8121-989810 (voice) +49-8121-971941 (fax) http://omni128.de michael@nausch.org
Griasde Bernd, da bin ich nochmals: Am Donnerstag, 1. November 2001 21:41 schrieb Bernd Brodesser:
Machs mit /etc/crontab:
55 2,8,14,20 * * * bigchief /home/bigchief/omni128.de/tmp/hp-index
Ich hatte den Eintrag für 1x Pro Tag schon eingetragen. Dabei hatte ich einfach einen vorhandenen Eintrag kopiert und editiert. Heruas kam folgendes: 55 2 * * * bigchief test -x /home/bigchief/omni128.de/tmp/hp-index \ && /home/bigchief/omni128.de/tmp/hp-index Hab' die zeile umgebrochen und mittels '\' markiert. Das ganze läuft hervorragend, bekam sogar eine Nachricht zugeschickt, mit den Bildschirmausgaben meines scriptes. Aber was bedeutet denn eigentlich: test -x && und warum ist der Befehl 2x da? Bin ziemlich ratlos ... :-) cu, BC -- Michael Nausch Anzinger Str. 20 85586 Poing +49-8121-989810 (voice) +49-8121-971941 (fax) http://omni128.de michael@nausch.org
^Hallo Michael, Michael Nausch wrote:
Am Donnerstag, 1. November 2001 21:41 schrieb Bernd Brodesser:
Machs mit /etc/crontab:
55 2,8,14,20 * * * bigchief /home/bigchief/omni128.de/tmp/hp-index
Ich hatte den Eintrag für 1x Pro Tag schon eingetragen. Dabei hatte ich einfach einen vorhandenen Eintrag kopiert und editiert. Heruas kam folgendes:
55 2 * * * bigchief test -x /home/bigchief/omni128.de/tmp/hp-index \ && /home/bigchief/omni128.de/tmp/hp-index
Hab' die zeile umgebrochen und mittels '\' markiert.
Das ganze läuft hervorragend, bekam sogar eine Nachricht zugeschickt, mit den Bildschirmausgaben meines scriptes.
Aber was bedeutet denn eigentlich: test -x &&
Schau mal in die Manpage der Bash: test -x <datei> prüft, ob <datei> existiert && Führt das Kommando hinter dem && nur dann aus, wenn das Kommando vor dem && erfolgreich ablief (genauer, einen Exit-Status 0 lieferte)
und warum ist der Befehl 2x da?
In Deinem Fall erfolgt also zuerst ein Test, ob es die Datei /home/bigchief/omni128.de/tmp/hp-index" überhaupt gibt (1. Name), und wenn dem so ist, wird sie ausgeführt (2. Name). <spitzfindig> Genau genommen steht nicht der Befehl zwei Mal da, sondern nur der Name der Datei, aber beim ersten Mal als Argument des Kommandos "test", beim zweiten Mal als Kommando. </spitzfindig> Hoffe so weit alles klärchen? So long, Norbert
* Norbert Kordts schrieb am 01.Nov.2001:
Michael Nausch wrote:
Ich hatte den Eintrag für 1x Pro Tag schon eingetragen. Dabei hatte ich einfach einen vorhandenen Eintrag kopiert und editiert. Heruas kam folgendes:
55 2 * * * bigchief test -x /home/bigchief/omni128.de/tmp/hp-index \ && /home/bigchief/omni128.de/tmp/hp-index
Das ganze läuft hervorragend, bekam sogar eine Nachricht zugeschickt, mit den Bildschirmausgaben meines scriptes.
Da cron keinem tty zugeordnet ist, kann es schlechterdings eine Bildschirmausgabe machen. Daher schickt cron eine Mail.
Aber was bedeutet denn eigentlich: test -x &&
test -x <datei> prüft, ob <datei> existiert
&& Führt das Kommando hinter dem && nur dann aus, wenn das Kommando vor dem && erfolgreich ablief (genauer, einen Exit-Status 0 lieferte)
und warum ist der Befehl 2x da?
In Deinem Fall erfolgt also zuerst ein Test, ob es die Datei /home/bigchief/omni128.de/tmp/hp-index" überhaupt gibt (1. Name),
Nicht nur gibt, daß wäre mit test -e erledigt, sonder auch noch darüber hinaus, ob die Datei, wenn es sie den gibt auch ausführbar ist.
und wenn dem so ist, wird sie ausgeführt (2. Name).
So ist es. Dabei wäre zu sagen, daß SuSE vor eine andere Situation steht als Du, Michael. Es kann ja durchaus sein, daß es eine gewisse Datei nicht gibt, z.B weil ein bestimmtes Programmpaket nicht installiert wurde. Wenn dem so ist, käme es ohne den Test zu häßlichen Fehlermeldungen. Darum wird zuvor getestet. Wenn Du aber ein Skript anlegst, dann weißt Du, daß es existiert. Daher ist der Test für Dich überflüssig. Im Gegenteil, solltest Du mal aus Unachtsamkeit mal das Skript löschen, verschieben oder das Ausführrecht nehmen, so ist Dir mit einer Fehlermeldung seitens cron mehr geholfen, als wen die nicht käme. Bernd -- Umsteiger von Microsoft Windows xx? Hast Du schon file://usr/doc/howto/de/DE-DOS-nach-Linux-HOWTO.txt gelesen? Auch file://usr/doc/Books/Linuxhandbuch.dvi ist zu empfehlen. |Zufallssignatur 1
Hallo Bernd, Bernd Brodesser wrote:
* Norbert Kordts schrieb am 01.Nov.2001:
Michael Nausch wrote:
[...Frage zu test...]
test -x <datei> prüft, ob <datei> existiert
&& Führt das Kommando hinter dem && nur dann aus, wenn das Kommando vor dem && erfolgreich ablief (genauer, einen Exit-Status 0 lieferte)
und warum ist der Befehl 2x da?
In Deinem Fall erfolgt also zuerst ein Test, ob es die Datei /home/bigchief/omni128.de/tmp/hp-index" überhaupt gibt (1. Name),
Nicht nur gibt, daß wäre mit test -e erledigt, sonder auch noch darüber hinaus, ob die Datei, wenn es sie den gibt auch ausführbar ist.
Danke für die Korrektur, ich hatte nicht in der Manpage nachgesehen und war prompt auf die mnemotechnische Ähnlichkeit von "existant" und "executable" reingefallen! Dabei wissen wir doch eigentlich alle, wie sehr es gerade in der Informatik auf Präzision des sprachlichen Ausdrucks ankommt; die Liste enthält so manches Beispiel für entsprechende Mißverständnisse...
und wenn dem so ist, wird sie ausgeführt (2. Name).
So ist es. Dabei wäre zu sagen, daß SuSE vor eine andere Situation steht als Du, Michael. Es kann ja durchaus sein, daß es eine gewisse Datei nicht gibt, z.B weil ein bestimmtes Programmpaket nicht installiert wurde. Wenn dem so ist, käme es ohne den Test zu häßlichen Fehlermeldungen. Darum wird zuvor getestet.
Wenn Du aber ein Skript anlegst, dann weißt Du, daß es existiert. Daher ist der Test für Dich überflüssig. Im Gegenteil, solltest Du mal aus Unachtsamkeit mal das Skript löschen, verschieben oder das Ausführrecht nehmen, so ist Dir mit einer Fehlermeldung seitens cron mehr geholfen, als wen die nicht käme.
Interessanter Aspekt, das hatte ich bisher doch gar nicht so bedacht! So long, Norbert
Griasde Norbert! Am Donnerstag, 1. November 2001 23:42 schrieb Norbert Kordts:
Schau mal in die Manpage der Bash:
test -x <datei> prüft, ob <datei> existiert
&& Führt das Kommando hinter dem && nur dann aus, wenn das Kommando vor dem && erfolgreich ablief (genauer, einen Exit-Status 0 lieferte)
Auf die Idee, dass test ein eigener Befehl ist, bin ich leider nicht gekommen. Ich dachte immeer das sei lediglich eine option bei crontab oder dergleichen.
Hoffe so weit alles klärchen?
Nun ja, bei der spitzen Erklärung! :-) Servus, BC -- Michael Nausch Anzinger Str. 20 85586 Poing +49-8121-989810 (voice) +49-8121-971941 (fax) http://omni128.de michael@nausch.org
Hallo, On Thursday 01 November 2001 22:09, Michael Nausch wrote:
Aber was bedeutet denn eigentlich: test -x
test -x überprüft, ob die übergebene Datei ausführbar ist. man test.
&&
Wenn der Befehl vor dem && den exitstatus 0 zurückgibt (was soviel wie "alles klar" bedeutet), wird der nach dem && stehende Befehl ausgeführt. Kurz: Teste, ob's ausführbar ist, wenn ja, dann tu's. ;) Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website. -=- Kernel_source_comment_of_the_month=\ `grep gently /usr/src/linux-2.2.19/arch/sparc/kernel/ptrace.c` */
Hallo Michael, Hallo Liste, Michael Nausch wrote: Thursday, November 01, 2001 9:00 PM Subject: cron - at - oder was?
Griaseeichallemidananda!
Jusdn wir ahben ein Problem, oder so ähnlich kann ich mein Problemchen beschreiben.
In der etc/crontab kann ich schön brav meine regelmäßigen Programme automatisch starten lassen. Das klatt ganz gut z.B. für Hylafax oder ähnliches.
Aber ich habe mir da eine kleine Routine gebastelt, die mir meine homepage mit "mehr Leben" füllt. Diese Routing starte ich zur Zeit entweder per Hand, oder durch den Aufruf in der crontab immer um 01:30 Uhr.
Nun will ich aber, daß das alles möglichst automatisch abläuft, so z.B. 4x am Tag, z.B. um 02:55 Uhr, 08:55 Uhr, 14:55 Uhr und 20:55 Uhr
Soweit ich die crontab verstanden hab, kann ich dies vergessen, wenn ich nun nicht ganz fals gewickelt bin, dann müsste es aber z.B. mit 'at' gehen, oder?
Ziel soll sein jeweils um 2:55 Uhr, 08:55 Uhr, 14:55 Uhr und 20:55 Uhr den script "/home/bigchief/omni128.de/tmp/hp-index" ablaufen zu lassen.
Reicht es nun wenn ich z.B. versuche per:
at 02:55 < /home/bigchief/omni128.de/tmp/hp-index at 08:55 < /home/bigchief/omni128.de/tmp/hp-index at 14:55 < /home/bigchief/omni128.de/tmp/hp-index at 20:55 < /home/bigchief/omni128.de/tmp/hp-index
die scripte automatisch starten lasse?
So z.B.:
bash-2.05# at 20:55 < /home/bigchief/omni128.de/tmp/hp-index warning: commands will be executed using /bin/sh job 1 at 2001-11-01 20:55
mit atq wird mir angezeigt:
bash-2.05# atq 1 2001-11-01 20:55 a root bash-2.05#
Das ganze läuft aber dann nur 1x am 2001-11-01 um 20:55Uhr, oder?
Wenn ich dann nun alles automatisch ablaufen lassen möchte, denke ich mal müsste es doch wie folgt gehen:
per crontab den folgenden script jeden Tag um 01:00 Uhr Aufrufen lassen:
#!/bin/tcsh at 02:55 < /home/bigchief/omni128.de/tmp/hp-index at 08:55 < /home/bigchief/omni128.de/tmp/hp-index at 14:55 < /home/bigchief/omni128.de/tmp/hp-index at 20:55 < /home/bigchief/omni128.de/tmp/hp-index
dann müsste es doch klappen, oder?
Versuch doch mal (Annahme: tägliche Ausführung): 55 2,8,14,20 * * * [user] /home/bigchief/omni128.de/tmp/hp-index 2,8,14,20 steht für die Stunden. Also wird hier um 2:55; 8:55; 14:55; 20:55 Dein Skript ausgeführt. Alternativ: 55 2/6 * * * [user] /home/bigchief/omni128.de/tmp/hp-index Heißt: alle 6 Stunden, erstmalig um 2:55. Gruß Guido
participants (5)
-
B.Brodesser@t-online.de
-
Guido Schiffer
-
Michael Nausch
-
Norbert Kordts
-
Stephan Hakuli