Futtasson Cron munkát minden percben

Run Cron Job Every Minute



Ha egy programot vagy szkriptet a háttérben szeretne futtatni Linux alatt, akkor a cron job nagyon fontos. A cron jobok segítségével egy programot vagy szkriptet hajthat végre a háttérben egy adott időintervallum után.

Nézzünk néhány példát a cron munkák valós életéből.





  • Tegyük fel, hogy Ön rendelkezik egy webhellyel, és minden nap szeretne e -mailt küldeni webhelye összes felhasználójának. Mindössze annyit kell tennie, hogy írjon egy e -mail küldő szkriptet, és állítson be egy cron feladatot a szkript mindennapi futtatásához.
  • Tegyük fel, hogy Ön egy reklámügynökség tulajdonosa, és emlékeztetni szeretné azokat a hirdetőket, akiknek egyenlege 5 dollár alatt van. Mindössze annyit kell tennie, hogy írjon egy szkriptet, amely ellenőrzi az összes hirdető egyenlegét, és ha az 5 dollár alatt van, értesítést küld a hirdető mobilszámára vagy e -mail címére. Ezután állítson be egy cron feladatot a szkript 5-10 percenként vagy óránként történő futtatásához.

A Linuxban sok más cron feladat is használható.



Ebben a cikkben megmutatom, hogyan futtathat cron feladatokat percenként Linuxon. A bemutatóhoz a Debian 9 Stretch -et fogom használni. De bármilyen tetszőleges modern Linux disztribúciót használhat. Lássunk neki.



Linuxon nem kell annak lenned gyökér cron feladatok futtatásához. A cron jobokat bármely felhasználóként futtathatja. Linuxon minden felhasználó használhatja a crontab fájlt a saját cron -feladataik futtatásához.





Alapértelmezés szerint a felhasználónak nincs crontab fájl Linuxon. Létrehozhat egy crontab fájlt a következő paranccsal:

$crontab-És



Ha először futtatja ezt a parancsot, akkor meg kell kérnie, hogy válasszon ki egy szövegszerkesztőt a listából. Én választom nano , az alapértelmezett. Kiválaszthatja azt, amelyik tetszik. Ha elkészült, nyomja meg a gombot .

Az crontab fájlt kell létrehozni (ha még nem áll rendelkezésre), és megnyitja kedvenc szövegszerkesztőjével. Most hozzáadhatja saját cron feladatait a fájl végén, és ha elégedett, csak mentse el, és lépjen ki a szövegszerkesztőből.

A parancs minden percben történő futtatásának szintaxisa:

A szintaxisa crontab fájl a következő:

perc óra dayOfMonth month dayOfWeek parancsToRun

Itt,

  • perc lehet 0 nak nek 59 .
  • óra is lehet 0 nak nek 59 .
  • dayOfMonth lehet 1 nak nek 31 .
  • hónap lehet 1 nak nek 12 .
  • a hét napja lehet 0 nak nek 7 . 0 és 7 vasárnapot jelent, 1 hétfőt jelent, 2 keddet jelent és így tovább.

Futtatásához a commandToRun parancsot minden percben, írja be a crontab fájlt az alábbiak szerint:

* * * * *commandToRun

Crob -feladat végrehajtása minden percben:

Most, hogy ismerjük az elméleteket, adjunk hozzá egy egyszerű forgatókönyvet időzítő.sh hoz crontab fájlt, és nézze meg, hogyan kell kezelni.

Ban,-ben időzítő.sh script, csak a következő kódsorok vannak nálam. Mindössze egy új fájlt hoz létre /home/shovon/bin/timer.log (ha még nem létezik), és hozzáfűzi a date parancs kimenetét.

Most adjuk hozzá a forgatókönyvet a miénkhez crontab és hagyja futni percenként a következő sorral:

* * * * * /itthon/lapát/am/időzítő.sh

Miután mentette a crontab fájlt, és lépjen ki a szövegszerkesztőből, az új crontab fájlt telepíteni kell.

Egy perc elteltével új fájl jelenik meg időzítő.napló a kívánt könyvtárban jön létre, amint az az alábbi képernyőkép megjelölt részében látható.

Tól időzítő.napló log fájlt, nyilvánvaló, hogy a szkript időzítő.sh minden percben fut.

A Cron Jobs hibái:

A cron feladat hibáinak felderítéséhez küldje el a hibákat a error.log fájlt és normál kimeneteket access.log fájl például. Természetesen a fájloknak tetszőleges nevet adhat.

Ennek bizonyítására módosítottam a forgatókönyvet időzítő.sh kicsit. Most a hibákat elküldjük a címre error.log fájlt a / home / shovon / bin könyvtárba, és a kimenetek elküldésre kerülnek access.log ban,-ben / home / shovon / bin Könyvtár.

Eleinte a /tmp/i_must_be_itt fájl nem létezik, ezért a hibát a error.log fájlt, ahogy látja.

Az access.log a fájl jelenleg üres.

Most létrehozom a fájlt /tmp/i_must_be_itt

És mint látható, a kimenet a access.log fájl most.

Ha szeretné, átirányíthatja a kimenetet és a hibákat ugyanabban a fájlban az alábbiak szerint:

Amint láthatja, a STDIN és STDERR kimenetek elküldésre kerülnek a ki.napló fájlt.

Győződjön meg arról, hogy az utolsó munka befejeződött, mielőtt újra futtatná a munkát:

Ennek működéséhez létrehozhat egy ideiglenes fájlt közvetlenül a munka megkezdése után, és eltávolíthatja azt közvetlenül a befejezése előtt. Ezután a munka megkezdése előtt ellenőrizheti, hogy létezik -e ideiglenes fájl. Ha igen, akkor kiléphet a feladatból, és csak akkor futtathatja a feladatot, ha az ideiglenes fájl nem érhető el.

Ez az egyszerű forgatókönyv ezt teszi.

Mint látható, a időzítő.id fájl jön létre.

Olvasva a access.log fájl azt bizonyítja, hogy a cron job nem fut le, mielőtt az előző cron job befejeződött. Amint látja, 01:32:01 -kor futott, és legközelebb 01:33:01 -kor kellett volna futnia, de nem. Ehelyett 01: 35: 01 -kor futott, körülbelül 3 perccel később.

Cron Job kimenetek rendszerezése az egyszerű hibakereséshez:

Szépen formázhatja a kimeneteket, hogy könnyebb legyen a hibakeresés.

Egy példa arra, hogyan lehet ezt megtenni, az alábbi szkriptben található.

Mint látható, a kimenetek, hibák és sikerüzenetek szépen ki vannak nyomtatva a naplófájlban.

Csodálatos dolgokat tehet a cron jobokkal és a shell scriptekkel. Itt bemutattam néhány ötletet. De az ég a határa. Bátran kísérletezzen bármilyen elképzelésével. Köszönjük, hogy elolvasta ezt a cikket.