Android

A cron feladatok ütemezése a crontab segítségével

Embedded Linux Conference 2013 - Task Scheduling for Multicore Embedded Devices

Embedded Linux Conference 2013 - Task Scheduling for Multicore Embedded Devices

Tartalomjegyzék:

Anonim

A Cron egy ütemezési démon, amely meghatározott időközönként végrehajtja a feladatokat. Ezeket a feladatokat cron joboknak nevezik, és elsősorban a rendszer karbantartásának vagy adminisztrációjának automatizálására használják.

Beállíthat egy cron feladatot az ismétlődő feladatok automatizálására, például adatbázisok vagy adatok biztonsági mentésére, a rendszer frissítésére a legújabb biztonsági javításokkal, a lemezterület-felhasználás ellenőrzésére, e-mailek küldésére és így tovább. Egyes alkalmazások, például a Drupal vagy a Magento, bizonyos feladatok elvégzéséhez cron feladatokat igényelnek.

A cron feladatok ütemezhetők egy perc, óra, a hónap napja, a hónap, a hét napja vagy ezek bármely kombinációja alapján.

Mi az a Crontab fájl?

A Crontab (cron table) egy szöveges fájl, amely meghatározza a cron feladatok ütemezését. Kétféle típusú crontab fájl létezik. A rendszerszintű crontab fájlok és az egyes felhasználók crontab fájlok.

A crontab fájlokat a felhasználó neve tárolja, és helyük az operációs rendszerektől függ. A Red Hat alapú rendszerekben, például a CentOS, a crontab fájlokat a /var/spool/cron könyvtárban tárolják, míg a Debian és az Ubuntu fájlokat a /var/spool/cron/crontabs könyvtárban tárolják.

Bár a felhasználó crontab fájljait manuálisan is szerkesztheti, ajánlott a crontab parancs használata.

/etc/crontab és az /etc/cron.d könyvtárban lévő fájlok rendszerszintű crontab fájlok, amelyeket csak a rendszergazdák szerkeszthetnek.

A legtöbb Linux disztribúcióban szkripteket is elhelyezhet az /etc/cron.{hourly, daily, weekly, monthly} hour/day/week/month /etc/cron.{hourly, daily, weekly, monthly} könyvtárakban, és a szkriptek hour/day/week/month kerülnek végrehajtásra.

Crontab szintaxis és operátorok

A felhasználói crontab fájl minden sora hat mezőt tartalmaz, szóközzel elválasztva, amelyet a futtatandó parancs követ.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

Az első öt mező egy vagy több értéket tartalmazhat, vesszővel elválasztva, vagy kötőjelekkel elválasztott értéktartományt.

  • * -A csillag operátor bármilyen értéket jelent, vagy mindig. Ha van egy csillag szimbóluma az Óra mezőben, ez azt jelenti, hogy a feladatot óránként végre kell hajtani. , -A vessző operátor lehetővé teszi az ismétléshez szükséges értékek listájának meghatározását. Például, ha 1, 3, 5 van az Óra mezőben, akkor a feladat 1 és 3 órakor fut 5 órakor. - -A kötőjel operátor lehetővé teszi az értéktartomány meghatározását. Ha 1-5 van a hét napja mezőben, akkor a feladat minden hétköznap fut (hétfőtől péntekig). / -A perjel operátor lehetővé teszi azoknak az értékeknek a meghatározását, amelyeket egy bizonyos intervallumon megismételnek. Például, ha */4 van az Óra mezőben, ez azt jelenti, hogy a műveletet négy óránként hajtják végre. Ugyanaz, mint a 0, 4, 8, 12, 16, 20 meghatározása. A perjel operátor előtti csillag helyett használhat egy értéktartományt is, az 1-30/10 jelentése megegyezik az 1, 11, 21 .

Rendszeres Crontab fájlok

A rendszerszintű crontab fájlok szintaxisa kissé eltér a felhasználói crontab fájloktól. Tartalmaz egy további kötelező felhasználói mezőt, amely meghatározza, hogy melyik felhasználó futtatja a cron feladatot.

* * * * * command(s) * * * * * command(s)

Előre meghatározott makrók

Számos speciális Cron ütemezési makró használható közös intervallumok meghatározására. Ezeket a hivatkozásokat az öt oszlopos dátum-specifikáció helyett használhatja.

  • @yearly (vagy @annually ) - A megadott feladatot évente egyszer @annually január 1-jén éjfélkor (12:00). 0 0 1 1 * egyenértékű. @monthly - havonta egyszer futtassa a megadott feladatot, a hónap első napjának @monthly . 0 0 1 * * -val egyenértékű. @weekly - A megadott feladatot hetente egyszer, vasárnap éjfélkor @weekly . 0 0 * * 0 felel meg. @daily - A megadott feladatot naponta egyszer futtassa éjfélkor. 0 0 * * * -nak felel meg. @hourly - A megadott feladatot óránként egyszer futtassa az óra elején. 0 * * * * -nak felel meg. @reboot - futtassa a megadott feladatot a rendszer indításakor (indítási idő).

Linux Crontab parancs

A crontab parancs lehetővé teszi a crontab fájl telepítését vagy megnyitását szerkesztés céljából.

A crontab paranccsal megtekintheti, hozzáadhatja, eltávolíthatja vagy módosíthatja a cron feladatokat a következő lehetőségekkel:

  • crontab -e - A crontab fájl szerkesztése, vagy létrehozása, ha még nem létezik. crontab -l - A crontab fájl tartalmának megjelenítése. crontab -r - Az aktuális crontab fájl eltávolítása. crontab -i - Az eltávolítás előtt egy prompttel távolítsa el a jelenlegi crontab fájlt. crontab -u - Más felhasználású crontab fájl szerkesztése. Rendszergazda jogosultságokat igényel.

A crontab parancs megnyitja a crontab fájlt a VISUAL vagy az EDITOR környezeti változók által megadott szerkesztő segítségével.

Crontab változók

A cron démon automatikusan beállít több környezeti változót.

  • Az alapértelmezett elérési út PATH=/usr/bin:/bin van állítva. Ha a hívott parancs megtalálható a cron által megadott elérési útban, akkor használhatja a parancs abszolút elérési útját, vagy megváltoztathatja a cron $PATH változót. Nem adhat bele implicitet :$PATH mint ahogy egy szokásos szkriptnél tenné. Az alapértelmezett héj beállítása /bin/sh . A SHELL változó megváltoztatásával beállíthat egy másik héjat. A SHELL a parancsot a felhasználó otthoni könyvtárából hívja meg. A HOME változó felülbírálható a crontab beállításaival. Az e-mail értesítést a crontab tulajdonosának küldik el. Az alapértelmezett viselkedés felülírásához használhatja a MAILTO környezeti változót az vesszővel elválasztott összes e-mail cím listájával (e-mail címekkel), amelyekről értesítéseket szeretne kapni. Ha a MAILTO van MAILTO , de üres ( MAILTO="" ), akkor nem kerül levél küldésre.

Crontab korlátozások

A rendszergazdák az /etc/cron.deny és /etc/cron.allow fájlok segítségével vezérelhetik, hogy a felhasználóknak melyik férhet hozzá a crontab parancshoz. A fájlok egy felhasználónevet tartalmaznak, soronként egy felhasználónevet.

Alapértelmezés szerint csak az /etc/cron.deny fájl létezik és üres, ami azt jelenti, hogy minden felhasználó használhatja a crontab parancsot. Ha meg szeretné tagadni egy adott felhasználó számára a crontab parancsokhoz való hozzáférést, adja hozzá a felhasználónevet ehhez a fájlhoz.

Ha az /etc/cron.allow fájl létezik, akkor csak a fájlban felsorolt ​​felhasználók használhatják a crontab parancsot.

Ha egyik fájl sem létezik, akkor csak a rendszergazdai jogosultságokkal rendelkező felhasználók használhatják a crontab parancsot.

Cron Jobs példák

Az alábbiakban bemutatunk néhány cron feladat példát, amelyek megmutatják, hogyan kell ütemezni egy feladatot különböző időtartamokon.

  • Futtasson egy parancsot hétfőtől péntekig minden nap 15:00 óráig:

    0 15 * * 1-5 command

    Futtasson egy szkriptet 5 percenként, és a standard kimenetet átirányítsa a dev null , csak a szabványos hiba kerül a megadott e-mail címre:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Futtasson két parancsot hétfőn 15:00 óráig (használja az operátort && a parancsok között):

    0 15 * * Mon command1 && command2

    Futtasson egy PHP szkriptet 2 percenként, és írja a kimenetet egy fájlba:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Futtasson egy szkriptet minden nap, minden órában, minden órában, 8-tól 16-ig:

    00 08-16 * * * /path/to/script.sh

    Futtasson egy szkriptet minden hónap első hétfőjén, 7 órakor

    0 7 1-7 * 1 /path/to/script.sh

    Futtassa a forgatókönyvet minden hónap 1. és 15. napján 9: 15-kor:

    15 9 1, 15 * * /path/to/script.sh

    Állítsa be az egyéni HOME , PATH , SHELL és MAILTO változókat, és futtasson egy parancsot percenként.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Következtetés

Megtanulta, hogyan hozhat létre cron feladatokat és ütemezheti a feladatokat egy adott dátumon és időben.

Ha bármilyen kérdése van, nyugodtan írjon megjegyzést.

cron crontab terminál