Vessünk egy pillantást a cron munkák valós példáira.
- Tegyük fel, hogy Önnek van webhelye, és minden nap e-mailt szeretne küldeni a webhely minden felhasználójának. Csak annyit kell tennie, hogy írjon egy e-mailt küldő szkriptet, és beállít egy cron feladatot a szkript futtatásához minden nap.
- Tegyük fel, hogy Önnek van egy reklámügynöksége, és emlékeztetni szeretné az összes hirdetőt, akiknek az egyenlege 5 USD alatt van. Csak annyit kell tennie, hogy írjon egy szkriptet, amely ellenőrzi az összes hirdető egyenlegét, és ha ez 5 dollár alatt van, értesítést küld a hirdető mobilszámára vagy e-mailjére. Ezután állítson be egy cron feladatot a szkript futtatásához 5-10 percenként vagy óránként.
A cron-munkáknak sok más felhasználása van a Linuxban.
Ebben a cikkben megmutatom, hogyan lehet percenként futtatni a cron feladatokat Linuxon. A bemutatóhoz a Debian 9 Stretch programot fogom használni. De bármelyik választott modern Linux disztribúciót használhatja. Kezdjük el.
A Crontab alapjai:
Linuxon nem kell gyökér cron munkák futtatása érdekében. Bármelyik felhasználóként futtathat Cron-feladatokat. A Linux minden felhasználója használhatja a crontab fájl a saját cron-feladataik futtatásához.
Alapértelmezés szerint a felhasználónak nincs crontab fájl Linux alatt. Létrehozhat egy crontab fájl a következő paranccsal:
$ crontab -e
Ha először futtatja ezt a parancsot, akkor fel kell kérnie, hogy válasszon egy szövegszerkesztőt a listából. Válogatni fogok nano, az alapértelmezett. Kiválaszthatja azt, amelyik tetszik. Ha végzett, nyomja meg a gombot
A crontab létre kell hozni a fájlt (ha még nem érhető el), és megnyitni a kedvenc szövegszerkesztőjével. Most hozzáadhatja saját cron-feladatait a fájl végéhez, és ha elégedett, egyszerűen mentse el és lépjen ki a szövegszerkesztőből.
A parancs percenkénti futtatásának szintaktikája:
A szintaxisa crontab fájl a következő:
perc óra dayOfMonth hónap dayOfWeek commandToRunItt,
- 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 jelentése kedd és így tovább.
Futtatni a commandToRun parancsot percenként, írja be a crontab fájl az alábbiak szerint:
* * * * * commandToRunCrob munka futtatása percenként:
Most, hogy ismerjük az elméleteket, tegyünk hozzá egy egyszerű szkriptet 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. Csak egy új fájlt hoz létre / home / shovon / bin / timer.napló (ha még nem létezik), és hozzáfűzi a date parancs kimenetét.
Most adjuk hozzá a szkriptet a mi crontab és hagyja futni percenként a következő sorral:
* * * * * / home / shovon / bin / timer.SH
Miután elmentette a crontab fájlt, és lépjen ki az új szövegszerkesztőből crontab fájlt kell telepíteni.
Egy perc elteltével új fájl időzítő.napló a kívánt könyvtárban jön létre, amint az az alábbi képernyőkép kijelölt részében látható.
Tól időzítő.napló naplófájl, nyilvánvaló, hogy a szkript időzítő.SH percenként fut.
Hibák elkapása a Cron munkákból:
Ha hibákat szeretne elkapni egy cron jobból, akkor a hibákat elküldheti a hiba.napló fájl és normál kimenetek hozzáférés.napló fájl például. Természetesen bármit megnevezhet a fájloknak.
Ennek bizonyítására módosítottam a szkriptemet időzítő.SH kicsit. Most a hibákat elküldjük hiba.napló fájl a / home / shovon / bin könyvtárba, és a kimeneteket a rendszer elküldi hozzáférés.napló ban,-ben / home / shovon / bin Könyvtár.
Eleinte a / tmp / i_m_____ itt kell lennie fájl nem létezik, ezért a hiba.napló fájl, amint láthatja.
A hozzáférés.napló a fájl jelenleg üres.
Most létrehozom a fájlt / tmp / i_m_____ itt kell lennie
És amint láthatja, a kimenet a hozzáférés.napló fájl most.
Ha szeretné, a következőképpen irányíthatja át a kimenetet és a hibákat ugyanabban a fájlban:
Amint láthatja, az STDIN és az STDERR kimeneteket a rendszer küldi ki.napló fájl.
Az utolsó munka befejezése az új munka megkezdése előtt:
Ahhoz, hogy ez működjön, 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 az ideiglenes fájl. Ha mégis, akkor kiléphet a jobból, és csak akkor futtathatja a munkát, ha az ideiglenes fájl nem érhető el.
Ez az egyszerű szkript éppen ezt teszi.
Mint láthatja, a időzítő.pid fájl létrejön.
A. Olvasása hozzáférés.napló fájl bizonyítja, hogy a cron-feladat nem fut, mielőtt az előző cron-feladat befejeződött. Amint láthatja, 01: 32: 01-kor futott, és legközelebb 01: 33: 01-kor kellett volna futnia, de nem. Ehelyett 1: 35: 01-kor futott, körülbelül 3 perccel később.
Cron job kimenetek szervezése az egyszerű hibakereséshez:
Szépen formázhatja a kimeneteket, hogy megkönnyítse a cron munkájának hibakeresését.
A következő szkriptben példa van erre.
Amint láthatja, a kimeneteket, hibákat és sikerüzeneteket szépen kinyomtatják a naplófájlban.
Csodálatos dolgokat tehet a cron-feladatokkal és a shell szkriptekkel. Itt bemutattam néhány ötletet. De az ég a korlátod. Bátran kísérletezzen bármilyen ötlettel. Köszönjük, hogy elolvasta ezt a cikket.