Page 1 of 1

2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 11:22
by amiga1200
Ich habe 2 Cronjobs laufen,
Script-A:Täglich 3 Uhr:
ifdown dsl0
ifup dsl0
Dank Telekom, die immer noch meint, wir Deutsche brauchen eine 24h Trennung trotz Business & feste IP Vertrag(in kein anderes Land so ist so)

Script-B:im 5 Minuten Takt:
3 Server anpingen, wenn alle down then ifup dls0 und echo "datum: Neueinahl" >>log

wenn nun das Script A kurz DSL trennt und neu verbindet,
dann soll das Script B nicht anlaufen.
Was für Lösungen gibt es?

z.B.
Kann man Script B befehlen, zwischen 2:55 Uhr und 3:03 Uhr nicht zu starten?
Oder gibt es ein Befehl, 2 Cronjob nie gleichzeitig laufen lassen?
kann man eine Variable von Script A im Script B auswerten?

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 13:50
by ddm3ve
Ich würde das über eine lokale trigger Datei.

Zu beginn des Script a

touch /b.onrun

am ende rm /b.norun

Script b

if -f /b.norun ; then exit;

Syntaktisch bitte anpassen.
if -f

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 15:41
by amiga1200
kann man dann keine Globale Variablen definieren?
Script A setz die auf 1-für Aktiv, 0-für fertig
Script B frage ab, ob 1 then exit

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 16:58
by ddm3ve
Was stört dich an der Datei?
Leg sie unter /tmp und dann machst Du das so, wie ca. 90% all derjenigen, die das gleiche Problem haben.
Ganz ehrlich Globale Variablen will man nicht.

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 17:52
by Joe User
Script A einfach um 2:55 oder 3:05 Uhr ausführen und gut.

Ansonsten für Script B die 23 Stunden einzeln durch Kommata getrennt aufführen.

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 18:46
by ddm3ve
Naja, man weiss ja u.U. nie, wie lange so ein Script läuft.

Wenns, aus welchen Gründen auch immer, doch mal an die 23:59 braucht?
Oder zumindest so lange, bis es mit Script B kollidiert?

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 22:25
by amiga1200
Script A einfach um 2:55 oder 3:05 Uhr ausführen und gut.
Ansonsten für Script B die 23 Stunden einzeln durch Kommata getrennt aufführen
Script B läuft nicht im Stundentakt, sondern im 5 Min Takt.


das trennen und Einwahl dauert ca.5 Sec, auch wenn es im Jahr einmal kollidiert ist auch nicht schlimm.

Script B startet so:
*/5 * * * * root /wartung/ping.sh >/dev/null 2>&1 # Jede 5 Min

heiß das, das es immer 20:05; 20:10; 20:15... läuft,
wenn ja ist alles gut, dann würde ich Script A
*/5 03 * * * geben (Jeden Tag um 05:03)

oder ist */5 * * * *
der Startpunkt nicht fixt, kann z.B. 20:03, dann 20:08; 20:13 Sein?

Nachtrag:
Was stört dich an der Datei?
Die Info kann man bequem in ein Bit packen, warum dafür die Festplatte rattern lassen.
Gerade fällt mir ein, im B Script einfach abfragen, ob es zw. 4.59 und 5.05 Uhr ist, dann startet es einma halt nicht.
Aber wenn B immer 20:05; 20:10; 20:15 startet lasse ich es so.

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-17 22:59
by Joe User
Cron A täglich 2:58 Uhr

Code: Select all

58 2 * * * ...
Cron B 5min-Takt

Code: Select all

*/5 * * * * ...

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-18 00:24
by ddm3ve
amiga1200 wrote:
Was stört dich an der Datei?
Die Info kann man bequem in ein Bit packen, warum dafür die Festplatte rattern lassen.
Gerade fällt mir ein, im B Script einfach abfragen, ob es zw. 4.59 und 5.05 Uhr ist, dann startet es einma halt nicht.
Aber wenn B immer 20:05; 20:10; 20:15 startet lasse ich es so.

Also, das Bit alle 5 Minuten schreiben, das tut auch der Platte nicht zwangsläufig weh. Und falls man doch die Platte entlasten will, kann man es in ein RAMFS packen.

BTW: Nur zum Klugscheissen und nicht Bier ernst gemeint.
Deine Anforderung war, das Script B soll ja nicht laufen, wenn Script A läuft.

Jetzt ist die Lösung eher die, meistens wird zwar Script B nicht laufen, wenn A läuft aber so wirklich genau wissen wirs eigentlich auch nicht eine Kontrolle gibt es nicht.
Nicht persönlich nehmen, so erlebe ich das auch anderswo jeden Tag, dass eindeutige Anforderungen mit einer inkonsequenten Lösung erschlagen werden.
Eigentlich gemurkst.

Wie schon gesagt, ist nicht persönlich gemeint.

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-19 14:51
by amiga1200
Script A hat ja Prio 1, damit die Zwangstrennung um 3:00 Uhr passiert, und ncht am Tage!
Script B in 5 Min. Takt zum testen der Verbindung kann auch mal aussetzen!

Daher habe ich vor Script B eine Abfrage gesetzt, damit es nicht zw. 2:55 und 3:05 Uhr ausgeführt wird.

Code: Select all

h=`date +%H`
m=`date +%M`

let z=h*60
let z=z+m       #Min. seit 0:00 Uhr

if [ $z -gt 175 ]   # wenn zw. 175- 182 then exit
then
        if [ $z -lt 182 ]
        then
                exit # zw. 2:55 - 3:02 kein Ping-Test
        fi
fi;
Hier Ping Test ausfuhren...

Ich bin Shell -Script-Anfänger, ich glaube das bekommt hier jemand in 3-5 Zeilen hin.

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-19 17:56
by ddm3ve
Wenn es so sein soll, dass Script B nicht zwischen 2:55 und 03:02 läuft, dann trage es einfach genau so auch in den Crontab ein.
Damit es ggf. übesrichtlicher wird, mach 2 Crontab Einträge Für Script B.

Eines von 03:00 - 02:00 (23 Stunden lang alle 5 Minuten)
/5 3-1 * * *

sowie eines das ab 2:00 alle 5 Minuten bis 2:50 läuft:
5,10,15,20,25,30,35,40,45,50 2 * * *

Danach läuft ab 03:00 das Script wieder alle 5 Minuten.
Du hast dann deine 10-15 Minuten Pause.


Eigentlich simpel. Aber mal einfach hinterfragt, um 2 Uhr morgens, wenn Du da im schlimmsten Fall eine Stunde offline wärst.....
Wäre das ein Problem?

Falls nein, dann kannst Du Dir den 2. Eintrag sparen-
Aber wie schon gesagt, ich halte das für gemurkts. Ein Triggerfile und das Thema wäre zuverlässig erledigt.

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Posted: 2012-02-20 21:11
by amiga1200
Eigentlich simpel. Aber mal einfach hinterfragt, um 2 Uhr morgens, wenn Du da im schlimmsten Fall eine Stunde offline wärst.....
Wäre das ein Problem?
Problem für mich nicht, ich hoste über VDSL Webseiten, mit ca. 5000 Besucher täglich, die Sites sollten auch nachts erreichbar sein, sonst rufen die Kunden an...

Falls nein, dann kannst Du Dir den 2. Eintrag sparen-
Aber wie schon gesagt, ich halte das für gemurkts. Ein Triggerfile und das Thema wäre zuverlässig erledigt.
Ich werde mir das mit File erstellen / File löschen / Abfrage ob File vorhanden noch mal ansehen, das scheint die sauberste Lösung zu sein.