Fórumok
Sziasztok, azt a feladatot kaptam, hogy minden hónap 1. és 3. hétfőjén futtassak le egy scriptet, gondoltam, automatizálom. Előkaptam a crontabot, és beszúrtam ezt:
0 7 1-7,15-21 * 1 /usr/local/bin/script
Gondoltam ezzel végeztem is, de valami nem kerek, mert minden reggel lefuttatja :-(
A gugli találatok szerint is jól csináltam, van valakinek erre megoldása?
Hozzászólások
1-7 az intervallum nem?
Szerintem is.
A gugli sem érthet mindenhez. A manual ezt mondja:
Valami hasonló?
Dolpa
Van segítség, https://crontab.guru/#0_7_1-7,15-21_*_1
ez volt beállítva nálam is, mégis naponta futtatja :-(
Én is azt mondanám a "-" ranget jelöl így és a man alapján inkább így :
0 7 1,7,15,21 * 1 /usr/local/bin/script
“At 07:00 on day-of-month 1, 7, 15, and 21 and on Monday.”
https://crontab.guru/#0_7_1,7,15,21_*_1
Valóban ranget jelöl, de ott a végén az 1-es, ami a hétfőt jelenti, így a logikám szerint hiába van harmadika, ha nem hétfőre esik, nem kellene lefutnia.
Gondolom azért van 1-7-ig megadva, mert nem tudjuk, hogy abban a hónapban melyik napra esik az 1. hétfő.
A problémát egy félreértés okozza, az "és" szó nem logikai és műveletet jelent, hanem inkább "és lefut"-ot kell érteni alatta. Azaz a fenti formátum lefut a hónap első 7 napján, és lefut a hónap 15-21. napján, és lefut hétfőnként 7:00-kor. A Crontab guru jól mondja, csak pontosan kell fordítani.
Van egy Quarz nevű cron klón, ott a "0 0 7 ? * 2#1,2#3" formátummal tudod megoldani amit szeretnél.
http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
A cron nem ennyire részletes, legközelebb a "0 7 */2 * 1" formátummal juthatsz, itt vagy az első és harmadik hétfőn fut le, vagy néha a másodikon és negyediken (pl. novemberben). Attól függ mikor, hogy a hétfő páros vagy páratlan napra esik. Ha ez nem jó, akkor a "0 7 * * 1" formátummal lefut minden hétfőn 7-kor, és egy közbeiktatott sctiptnek kell kiszámolni a többit.
itt rontottam el :-) kicsit csalódtam a cronban
A csalódás felesleges. Ahogy Mauzi elég korán jelezte, a dokumentáció teljesen egyértelmű: kétféleképp lehet megadni a "nap" információt. Meg lehet adni hónap-napja formában (ez a 3. mező, ha jól csalódok) és meg lehet adni hét-napja formában is (ez pedig az 5. mező. Ha mind a kettő explicit módon van megadva, akkor *bármelyik* teljesülése esetén lefut a megadott parancs. A klasszikus példa az, hogy minden péntek 13-án akarunk futtatni, akkor nem javasolt a hónap-napja mezőt 13-ra, a hét-napja mezőt pedig 5-re állítani, mert minden pénteken ÉS minden hó 13-án le fog futni. Hanem eldöntöd, hogy neked melyik feltételt könnyebb egy plusz paranccsal letesztelned - azt beteszed a futtatandó parancs elé plusz feltételként (mint itt több helyen : [ ... ] && formában) , és a másik feltételt állítod be a cronban.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
"A gugli találatok szerint is jól csináltam" Alighanem ezt találtad meg:
Ebből kihagytad a [] közötti részt, ami a "valódi" ellenőrzést végzi.
Szóval neked ilyesmi kéne:
Nem ellenőriztem le, de fogjuk rá hogy hihető.
Köszönöm, ez kell nekem!
Végre egy jó topik.
> Sol omnibus lucet.
Csak egy tipp:
Mi van akkor ha azt a feltételt nem cronnal vizsgálod, hogy az adott nap a hónap első/harmadik hetének hétfője, hanem a scripted elejébe teszed ezt meg?
Naívan azt hittem, hogy ez menni fog egy időzítőnek önállóan is :-)
Jól látom, a systemd timere se tudja? https://github.com/systemd/systemd/issues/6024