Cronjob spezial

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Cronjob spezial

Beitrag von minimike » 15.11.2012 17:36:26

Hi ich habe hier etwas das mich anstengt :)

Ich muss einen Cronjob ausführen und das jede Minute. Allerdings von 3:00 Morgens bis 1:00 Morgens am nächsten Tag. Von 1:00 bis 3:00 soll er nicht laufen.

Kann ich sowas in der Crontab definieren?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Liffi
Beiträge: 2346
Registriert: 02.10.2004 01:33:05

Re: Cronjob spezial

Beitrag von Liffi » 15.11.2012 17:39:46

Ja, z.B. mit einem if im Befehl.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Cronjob spezial

Beitrag von Cae » 15.11.2012 17:45:17

* 0-1,3-24 * * * foo muesste das tun, vielleicht ist der Cron sogar so intelligent und erkennt 3-1.
Was du nicht schreibst, aber vermutlich dein Problem ist: Der "Starttag" ist nicht *, sondern ein ganz bestimmter. Entsprechend gilt der obige Job dann fuer den kompletten Tag eins ausser 1-3 Uhr, Tag zwei wird nicht beruecksichtigt. Da musst du wohl zwei machen, entsprechend fuer Tag eins und zwei, mit demselben Befehl hinten (oder einen echten Daemon bauen, der nicht minuetlich das Syslog vollspammt).

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Re: Cronjob spezial

Beitrag von minimike » 15.11.2012 18:16:08

das mit 3-1 hatte ich zuerst probiert das geht aber nicht

* 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0 * * * /var/www/intranet-live/command.sh export_queue export -a 1>/dev/null 2>/dev/null

läuft. Warum aber

* 3-1 * * * /var/www/intranet-live/command.sh export_queue export -a 1>/dev/null 2>/dev/null

Nicht läuft verstehe ich gerade nicht.
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
Meillo
Moderator
Beiträge: 9280
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Cronjob spezial

Beitrag von Meillo » 16.11.2012 11:09:21

minimike hat geschrieben:Warum aber

* 3-1 * * * /var/www/intranet-live/command.sh export_queue export -a 1>/dev/null 2>/dev/null

Nicht läuft verstehe ich gerade nicht.
Vermutlich weil du eine andere Implementierung von Cron hast, die das halt nicht kann.
Use ed once in a while!

uname
Beiträge: 12492
Registriert: 03.06.2008 09:33:02

Re: Cronjob spezial

Beitrag von uname » 16.11.2012 11:20:56

Habe mal kurz den Quellcode von CRON gelesen. Interessant ist wohl die Datei "entry.c" und dort der Auszug:

Code: Alles auswählen

 num2 = high;

Code: Alles auswählen

 
ch = get_number(&num2, low, names, ch, file);   

Code: Alles auswählen

        
if (num1 < low || num1 > high || num2 < low || num2 > high)             
                return EOF;                                                     
                                                                                
        /* range. set all elements from num1 to num2, stepping                  
         * by num3.  (the step is a downward-compatible extension               
         * proposed conceptually by bob@acornrc, syntactically                  
         * designed then implmented by paul vixie).                             
         */                                                                     
        for (i = num1;  i <= num2;  i += num3)                                  
                if (EOF == set_element(bits, low, high, i))                     
                        return EOF;                                             
                                                                                
        return ch;                   
 
Irgendwie wird daraus wohl abgefangen, dass bei "a-b" b nicht kleiner als a sein kann.

Benutzeravatar
hikaru
Moderator
Beiträge: 13973
Registriert: 09.04.2008 12:48:59

Re: Cronjob spezial

Beitrag von hikaru » 16.11.2012 11:23:53

Was spricht gegen Liffis Vorschlag mit einem vom Cron aufgerufenen (Wrapper-)Script das die Zeit prüft und je nach Ergebnis den eigentlichen Job anstößt oder eben nicht?

Antworten