2 verschiedene Cronjobs nie gleichzeitig.

Bash, Shell, PHP, Python, Perl, CGI
amiga1200
Posts: 208
Joined: 2007-01-13 19:58

2 verschiedene Cronjobs nie gleichzeitig.

Post by amiga1200 » 2012-02-17 11:22

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?

ddm3ve
Moderator
Moderator
Posts: 1186
Joined: 2011-07-04 10:56

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by ddm3ve » 2012-02-17 13:50

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
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by amiga1200 » 2012-02-17 15:41

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
Last edited by amiga1200 on 2012-02-17 15:42, edited 1 time in total.

ddm3ve
Moderator
Moderator
Posts: 1186
Joined: 2011-07-04 10:56

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by ddm3ve » 2012-02-17 16:58

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.
Last edited by ddm3ve on 2012-02-17 16:59, edited 1 time in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by Joe User » 2012-02-17 17:52

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.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

ddm3ve
Moderator
Moderator
Posts: 1186
Joined: 2011-07-04 10:56

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by ddm3ve » 2012-02-17 18:46

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?
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by amiga1200 » 2012-02-17 22:25

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.
Last edited by amiga1200 on 2012-02-17 22:33, edited 1 time in total.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by Joe User » 2012-02-17 22:59

Cron A täglich 2:58 Uhr

Code: Select all

58 2 * * * ...


Cron B 5min-Takt

Code: Select all

*/5 * * * * ...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

ddm3ve
Moderator
Moderator
Posts: 1186
Joined: 2011-07-04 10:56

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by ddm3ve » 2012-02-18 00:24

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.
Last edited by ddm3ve on 2012-02-21 14:04, edited 2 times in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by amiga1200 » 2012-02-19 14:51

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.
Last edited by amiga1200 on 2012-02-19 15:49, edited 3 times in total.

ddm3ve
Moderator
Moderator
Posts: 1186
Joined: 2011-07-04 10:56

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by ddm3ve » 2012-02-19 17:56

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.
Last edited by ddm3ve on 2012-02-20 13:06, edited 2 times in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Re: 2 verschiedene Cronjobs nie gleichzeitig.

Post by amiga1200 » 2012-02-20 21:11

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.