Crontab - Ha jelenleg szerver- igényes webhelyed van, akkor bizonyos folyamatokat futtathat, például az adatok gazdagítását vagy a háttérképen miniatűrök létrehozását, anélkül, hogy zavarná a felhasználói felületet. Nos, a Linux crontabnak van egy jó programja, amely pontosan ezt teszi: Cron.

Bevezetés a Cron-ba

Szóval mi ez a program? A Cron démonként van besorolva, amely képes végrehajtani az ütemezett parancsokat. Ez automatikusan elindul, amikor belép a több felhasználói futási szintre, az /etc/init.d könyvtárból. A / var / spool / cron / crontabs könyvtárban található spoolterületen keresi az / etc / passwd mappában lévő fiókok elnevezésű crontab fájlokat. A könyvtárban található crontabs eléréséhez a crontab parancsot kell használnia a közvetlen elérés helyett. A Cron az / etc / crontab enyhén eltérő formátumát, valamint az /etc/cron.d fájlokat is képes olvasni.

A konfigurálást követően a Cron minden percben felébred, megvizsgálja a tárolt linux crontabokat, és ellenőrzi a parancsot, hogy végrehajtson-e valamit. Ha egy parancs végrehajtásra kerül és a kimenet generálódik, akkor a kimenetet ezután elküldik a crontab tulajdonosának vagy felhasználójának a crontab MAILTO változójában. Azokat a cron gyermekek példányait, amelyek ezeket a folyamatokat futtatják, nagybetűkkel nevezzük el, amelyeket a ps és a syslog kimenetben láthat.

A Cron percenként ellenőrzi a spool könyvtár módosítási idejét is. Ha vannak változások, akkor megvizsgálja az összes linux crontab modtime-jét és újratelepíti azokat, amelyek megváltoztak. Ennek eredményeként a cronnak nem kell újraindulnia, amikor a crontab fájl megváltozik.

Ha az órát három óránál kevesebbel változtatják, akkor különös szempontok vannak fenn, például a nyári időszámítás kezdetén és végén. Ha az idő előrehalad, a kihagyott időben futó jobok megváltoznak, hogy a változás után hamarosan futnak. Másrészt, ha az idő hátra mozog, az ismétlődő időbe eső feladatok nem kerülnek újrafutásra.

Csak az olyan munkákat érinti, amelyek egy adott időben futnak, és nem az órabérek, vagy azokat, amelyek a perc / óra specifikátorban '* -gal vannak jelölve. A vadon élő autókkal megadott munkák az új idő alapján azonnal futnak. Három óránál hosszabb óraváltoztatás esetén az új idő azonnal felhasználásra kerül.

A Red hat és a Debian esetében a cron a cron.d fájlokat a linux crontab fájl kiterjesztéseként kezeli, mivel ezek a fájl speciális formátumát követik, ami azt jelenti, hogy tartalmazzák a felhasználói mezőt. Ez a szolgáltatás célja, hogy lehetővé tegye azokat a csomagokat, amelyek finomabb ütemezési ellenőrzést igényelnek, mint a napi, a havi vagy a heti könyvtárak. Az ilyen fájlokat ideális esetben szállítói csomagjaik alapján kell elnevezni. A fájloknak meg kell felelniük a futó részekhez használt elnevezési konvenciónak, mivel azoknak kizárólag nagy- és kisbetűkből, számjegyekből, kötőjelekből és aláhúzásból kell állniuk. A cron.d könyvtárban található fájlokat a változások ellenőrzése alatt tartják, csakúgy, mint a linux crontab könyvtárat. A / bin / ls parancsoknál feltétlenül használjon abszolút útneveket a helyes parancs meghívásához.

Bevezetés a Linux Crontab-ba

Most, hogy ismeri a cron hibáit, nézzük meg közelebb a linux crontab-ot, amely egy program a táblák telepítéséhez, eltávolításához vagy felsorolásához, hogy maga a démon meghajtó legyen. Minden felhasználónak rendelkezhet saját linuxos crontab-mal, és a fájlok elérhetők a crontabs könyvtárban, de nem a közvetlen szerkesztésre szolgálnak.

A felhasználó linux crontab-jában megadott bármely parancs végrehajtása az azt birtokló felhasználóként történik. A tabulátorokat, az első szóközöket és az üres sorokat általában figyelmen kívül hagyják. Azokat a vonalakat, amelyek hash jele az első nem szóköz karakter, figyelmen kívül hagyják, mivel megjegyzésként kezelik őket. Érdemes megjegyezni, hogy a megjegyzés nem engedélyezett a cron parancsok ugyanazon sorában, mivel azokat a parancs részeként fogják olvasni. Hasonló megjegyzésként a környezeti változó beállításával rendelkező sorokon sem engedélyezettek a megjegyzések.

Egy linux crontab-ban egy aktív sor, cron parancs vagy környezeti változó beállítással, amely “name = value” formában van, és szükség esetén szóközök hozzáadhatók az egyenlő-jel alá. Az esetleges későbbi nem szóközök a névérték részét képezik. Az érték karakterláncát egy vagy kettős megfelelő idézőjelekbe lehet helyezni a hátsó vagy az üres helyek megőrzése érdekében. A környezeti helyettesítésekre nincs értelme, ezért előfordulhat, hogy a „PATH = $ HOME / bin: $ PATH” sorok nem fognak megfelelően működni.

Számos környezeti beállítást automatikusan beállít a cron, például a HOME és a LOGNAME a felhasználó passwd sorából áll, és a SHELL-t / bin / sh-re állítja, és a PATH-t / usr / bin: / bin-re állítja. A crontab beállításaival felülbírálhatja a PATH, SHELL és HOME fájlokat. A LOGname-t azonban nem lehet megváltoztatni, mivel a felhasználó futtatja a feladatot. BSD rendszereknél ezt a változót USER-nek lehetne hívni, ebben az esetben a USER-t is beállítják.

Ha az e-mailek küldése a linux crontabban futtatott parancsok része, akkor a cron a MAILTO-t is meg fogja nézni. Ha a változó definiált és nem üres, akkor e-mailt küldünk a megnevezett felhasználónak. De ha üres, akkor semmilyen levél nem kerül elküldésre, hanem e-mailt küld a linux crontab tulajdonosának. Ha a cron.allow fájl elérhető, akkor fel kell tüntetnie benne a parancs használatához. Ha ez a fájl nem létezik, de létezik egy cron.deny fájl, akkor a parancs használatához eltávolítania kell azt a fájlt. Ha egyik fájl sem létezik, akkor csak a szuper felhasználó képes használni a parancsot a helyfüggő paraméterektől függően. Alternatív megoldásként minden felhasználó képes lesz használni a parancsot, ami a szokásos Debian rendszerek esetében érvényes.

Ha a –u opció elérhető, akkor megadja a felhasználónevet, akinek a linux crontab módosítását igényli. Ha nem adják meg, akkor a crontab megvizsgálja a parancsot végrehajtó felhasználó crontab-ját. Fontos, hogy ezt a lehetőséget mindig a biztonság érdekében használjuk, amikor a su-ban futunk, mivel a linux crontab összekeverhető a su-val. Az -l opció elérhető az aktuális crontab megjelenítéséhez a standard kimeneten, míg az -r opció eltávolítja az aktuális crontabot. A -e parancs az aktuális linux crontab szerkesztésére szolgál az EDITOR vagy a VISUAL környezeti változók által megadott szerkesztõk segítségével. Nem használhat olyan szerkesztőt, amely összekapcsolja és újra létrehozza a fájlt; szüksége van egy szerkesztőre, amely szerkeszti a fájlt a helyén. A szerkesztőből való kilépés után a javított linux crontab automatikusan települ.

A pam_env modult a cron is támogatja a Debian GNU / Linux rendszeren, betöltve a környezetet a modul fájlban meghatározottak szerint. Meg kell azonban jegyezni, hogy a PAM beállítás nem felülírja a fent említett beállításokat vagy a crontab fájl beállításait. Ha olyan PATH-t szeretne, amely eltér a tálca helyétől, akkor be kell állítania a crontab fájlban. A Cron alapértelmezés szerint a 'text / sima' tartalomtípust használva küldi el a karakterkészlet paraméterrel beállított karakterkészlet paraméterét annak a lokálnak, amelyben a cron elindult, kódkészletére / karaktertérképére, amely az alapértelmezett rendszerszintű locale, környezeti változókészlet nélkül, vagy a locale, amelyet a változók beállítottak. Saját karakterkódolásokat adhat hozzá a levélkimenethez azáltal, hogy a crontabs 'Content_Transfer_Encoding' és 'Content_Type' változókat úgy állítja be, hogy megfeleljenek a nevek e-mail fejléceinek.

Ajánlott tanfolyamok

  • Online R Studio Anova technikák tanfolyam
  • Tanúsító képzés az AngularJS-ben
  • ISTQB 1. szintű tanúsító tanfolyam
  • Tanúsító képzés a szoftvertesztelés alapjaihoz

A Crontabon dolgozik

A crontab parancs, amely az Unix-szerű és az Unix operációs rendszerekben található, terminálon keresztül érhető el. Ha meg szeretné látni, hogy a crontab jelenleg fut, nyisson meg egy terminált a rendszeren, és futtassa a következő parancsot:

$ sudo crontab -l

A crontab joblista szerkesztéséhez használja a következő parancsot:

$ sudo crontab -e

Ez a parancs megnyitja a rendszerben az alapértelmezett szerkesztőt, amely pico vagy vio lehet, a crontab megváltoztatásához. A crontab job mentéséhez a crontab fájlba mentse el, és lépjen ki a szerkesztőből. A Crontab feladatok vagy cronjobok így írhatók:

* * * * * /bin/execute/this/script.sh

A fenti parancsban öt csillag található, amelyek mindegyike különböző dátumrészeket képvisel a munka ütemezéséhez. Itt vannak:

  1. Percek, nullától 59-ig
  2. Óra, nullától 23-ig
  3. A hónap napja egytől 31-ig terjed
  4. Hónap, egy-től 12-ig
  5. A hét napja, nullától hatig, nulla jelentése vasárnap

A fenti lista sorrendben került megadásra, tehát először meg kell határoznia a percet, majd az órát, a hónap napját, a hónapot és a hét napját. Megtarthatja a csillagot, ha nem akarja meghatározni a mezőket, de fontos megjegyezni, hogy a szimbólum „mindent” jelent. Ha mind az öt mezőt meghatározatlanul hagyja, amikor a csillagok érintetlenek, ez minden perc minden percét, minden hét napját és minden hónapját jelenti.

Tegyük fel, hogy csak egy vasárnap délben akar végrehajtani egy szkriptet, itt áll:

0 12 * * 0 /bin/execute/this/script.sh

Most, a szkript akkor kerül végrehajtásra, amikor a rendszeróra minden vasárnap, minden hónapban minden héten 1200 órát elér. Most, ha a szkriptet minden munkanapon délben 12-ig szeretné végrehajtani, íme itt:

0 12 * * 1-5 /bin/execute/this/script.sh

A cron parancsokat hajt végre, amikor az év, a hónap, az óra és a perc mezők megegyeznek az aktuális idővel, vagy ha legalább a hónap és az év napja megegyezik az aktuális idővel. Egy mezőt csillaggal lehet megjelölni, hogy jelölje az „első-utolsó” -t. A számtartományok megengedettek, a tartományok két számot tartalmaznak, kötőjelet elválasztva. A specifikus tartomány inkluzív, tehát a „órák” 8–11 tartománya megadja a végrehajtást a nyolcadik, kilencedik, tizedik és tizenegyedik órában. A listák szintén támogatottak, mindegyik szám vesszővel elválasztva, például '1, 2, 8, 9'. Keverheti és össze is keverheti, tehát '1, 2, 8-11' lehet.

Használhat lépésértékeket a tartományokkal együtt, a '/' egy tartomány után megadva a szám értékének átugrását a tartományon belül. Például a „0–11 / 2” az órák mezőben megadja a parancs végrehajtását minden második órában, amelyet listaként írnánk: „0, 2, 4, 6, 8, 10”. A csillag után lépések engedélyezhetők, például a '* / 2' jelzés, amely jelzi a két óránként végrehajtandó parancsot. A nap és a hónap mezőkhöz használhatja az adott nap vagy hónap első három betűjét, az esetnek pedig nincs jelentősége. A listák és a névtartományok azonban nem támogatottak. A végrehajtás napja két mezőben adható meg: a hét napja és a hónap napja. Ha mindkét mező korlátozott, akkor a parancs akkor fut, ha bármelyik mező megegyezik.

A sor többi része a 'hatodik' mező, amely meghatározza a futtatandó parancsot. A sor parancssori része egy új sort vagy legfeljebb% karaktert igényel. Ezt a sh vagy a megadott héj hajtja végre a crontab fájl SHELL változójában. A parancs% -a új sor karakterekre változik, kivéve, ha elmenekülnek a '\' visszajelzéssel. Az első% jel után az összes adatot normál bemenetként továbbítják a parancshoz. Egy parancssort nem oszthat több sorra.

Ütemezési trükkök a Crontab-on

A formázás hozzávetőlegesen hozzászokhat, de itt talál néhány trükköt, amelyek segíthetnek. Ha tíz percenként cronjob-t akar futtatni, akkor ezt írhatja:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

Vagy így írhatja, így könnyebb:

* / 10 * * * * /bin/execute/this/script.sh

Különleges szavakkal is rendelkezik, amelyeket szám helyett az első perc mezőbe adhat hozzá, például:

  • @ reboot: ez a szkriptet egyszer futtatja a rendszer indításakor
  • @év: a parancs futtatása évente egyszer (az alternatív formátum „0 0 1 1 *”)
  • @ évente: az éves kulcsszó alternatívája
  • @hónap: a parancs havonta egyszeri futtatása („0 0 1 * *”)
  • @hetente: hetente egyszer futtatni („0 0 * * 0”)
  • @daily: hetente egyszer futtatni („0 0 * * *”)
  • @midnight: a napi kulcsszó alternatívája
  • @óra: óránként futtatni (“0 * * * *”)

Kimeneti tárolás

Alapértelmezés szerint a cron elmenti a munka kimenetet a felhasználói postafiókba vagy a gyökérkönyvtárba. De a kimenetet egyszerűbbé és áttekinthetőbbé teheti, ha külön naplófájlba menti. Így csinálod:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

A Linux képes különféle jelentések készítésére. A STDERR és a STDOUT szabványos kimeneti standard hibái vannak, 2-gyel és 1-vel jelölve. A következő állítás azt mondja, hogy a STDERR és a STDOUT tárolására egyaránt szükség van - az üzenetek és hibák egyetlen adatfolyamának létrehozására:

2> & 1

Tehát meghatároztuk a kimeneti adatfolyamot, most meg kell adnunk neki egy rendeltetési helyet. A '>' felülírja a fájlt, és a '>>' csatolja azt. A biztonságosabb feltöltéshez a következő parancsot használhatja:

>> /var/log/script_output.log

Következtetés

Mint láthatja, a cron lehetővé teszi, hogy a feladatokat automatikusan, rendszeres időközönként futtassa a háttérben. Ez lehetővé teszi a biztonsági mentések automatikus létrehozását, a frissítések ütemezését, a fájlok szinkronizálását és még sok minden mást. Mindent megtehetsz a crontab segítségével.

Ajánlott cikkek: -

Íme néhány cikk, amely segít részletesebben megismerni a Linux Crontab-ot, tehát csak keresse meg a linket.

  1. Linux interjúval kapcsolatos kérdések és válaszok Hasznos és a legtöbb kérdés
  2. Karrier Linux alatt
  3. A 10 legfontosabb hasznos Linux alkalmazás a rendszergazdák számára
  4. Linux vs Windows 10

Kategória: