Ütemezett feladatokról (CRON) általánosan

Mi a CRON és hogyan működik?

A CRON egy időzítő eszköz, amely lehetővé teszi, hogy a rendszergazdák vagy fejlesztők bizonyos parancsokat vagy szkripteket automatikusan, előre meghatározott időpontokban vagy időközönként futtassanak a Linux és Unix rendszerekben. A CRON segítségével beállítható, hogy például napi, heti, havi vagy egyéb gyakorisággal futtassunk parancsokat, szkripteket vagy programokat. A CRON-t gyakran használják a rendszer karbantartására, automatikus biztonsági mentésekre, adatbázis frissítésekre és más hasonló feladatokra.

A CRON szintaxisa

A CRON feladatok időpontjának meghatározására a CRON időzítő kifejezés szintaxist használjuk. Az időzítő kifejezés határozza meg, hogy a feladat mikor fusson le. A szintaxis az alábbi formátumban van:

* * * * * parancs
│ │ │ │ │
│ │ │ │ └─ Nap a hétben (0-7, ahol 0 és 7 vasárnap)
│ │ │ └──── Hónap (1-12)
│ │ └────── Nap a hónapban (1-31)
│ └──────── Óra (0-23)
└───────── Perc (0-59)

Példák:

  • 0 0 * * * – Ez a kifejezés minden nap éjfélkor futtatja a parancsot.
  • */5 * * * * – Ez a kifejezés minden 5. percben futtatja a parancsot.
  • 0 6 * * 1 – Minden hétfőn reggel 6 órakor futtatja a parancsot.

A * (csillag) azt jelenti, hogy bármely értéket elfogadunk az adott helyen (pl. bármely perc, bármely hónap, stb.).

CRON fájlok

A CRON feladatokat a crontab fájlban tároljuk. Minden felhasználónak van saját crontab fájlja, amit a crontab parancs segítségével érhetünk el és szerkeszthetünk.

A crontab fájl megnyitása és szerkesztése

A CRON feladatok szerkesztéséhez a következő parancsot használhatjuk:

crontab -e

Ez a parancs megnyitja a felhasználó CRON fájlját, ahol hozzáadhatunk új feladatokat. Miután hozzáadtuk vagy módosítottuk a feladatokat, a fájl mentése után azok automatikusan aktiválódnak.

A CRON fájlok ellenőrzése

A felhasználói CRON fájlok listázásához a következő parancsot használhatjuk:

crontab -l

A CRON feladatok példái

  1. URL hívás curl és wget segítségével:

    A CRON segítségével URL-eket is meghívhatunk a curl vagy wget eszközökkel. Ilyen esetben például egy weboldal elérését szeretnénk automatikusan elvégezni a háttérben.
    * * * * * /usr/bin/curl http://example.com/some_script.php > /dev/null 2>&1
    vagy
    * * * * * /usr/bin/wget -q http://example.com/some_script.php > /dev/null 2>&1

    Itt a > /dev/null 2>&1 azt biztosítja, hogy a kimenet és a hibák ne kerüljenek a CRON logba, így csak a szkriptek futtatása marad naplózás nélkül.
  2. PHP szkriptek futtatása CRON-ból:

    Ha PHP szkriptet kell futtatni a CRON-ban, figyelembe kell venni, hogy a megfelelő PHP verziót válasszuk ki, különösen újabb rendszereken, ahol több verzió is telepítve lehet.

    • Rendszer alapértelmezett PHP verziójával futtatva:
      * * * * * php /path/to/script.php

    • Eltérő PHP verzióval való futtatás:
      * * * * * /opt/phpX/usr/bin/php /path/to/script.php
      Itt a megfelelő útvonalat kell megadni a kívánt PHP verzió binary eléréséhez.

Kimenetek kezelése a CRON-ban

A CRON feladatok futtatása során generálódó kimenetet kezelhetjük, hogy elkerüljük a CRON log fájlok túlterhelését vagy hogy értesítést kapjunk a futtatott feladatok eredményéről.

  1. Kimenet elnyomása: Ha nem akarjuk, hogy a CRON feladatok kimenete naplózódjon, hozzáadhatjuk a következőket:
    * * * * * /usr/bin/php /path/to/script.php > /dev/null 2>&1

  2. Kimenet küldése e-mailben: Alapértelmezés szerint, ha a CRON feladatok hibát generálnak, a rendszer e-mailt küld a felhasználó számára. Ha e-mailben szeretnénk értesítést kapni a sikeres futtatásról is, a kimenetet az MAILTO változóval irányíthatjuk egy e-mail címre:
    MAILTO="[email protected]"
    * * * * * /usr/bin/php /path/to/script.php