Crontab Linux alatt: Munkaütemezési PÉLDÁK

⚡ Okos összefoglaló

A Linuxban a Crontab a cron démon segítségével automatikusan, meghatározott időpontokban, dátumokon vagy időközönként futtatja a parancsokat, lehetővé téve a rendszergazdák számára a biztonsági mentések, a naplók tisztítása, az értesítések és a rendszeres rendszerkarbantartás automatizálását manuális beavatkozás nélkül.

  • Cron démon: A cron háttérfolyamat beolvassa a crontab fájlokat, és minden ütemezett feladatot a beállított percben futtat.
  • 🗂️ Crontab formátum: Öt időmező – perc, óra, hónap napja, hónap és a hét napja – előzi meg a futtatandó parancsot.
  • ✍️ Szerkesztési feladatok: A crontab -e paranccsal adhatunk hozzá vagy módosíthatunk feladatokat, a crontab -l paranccsal listázhatjuk őket, az eltávolításukhoz pedig a crontab -r paranccsal használhatjuk őket.
  • 🔁 Speciális húrok: Az olyan billentyűparancsok, mint a @reboot, @daily, @weekly és @hourly, lecserélik az öt időmezőt a gyakori ütemtervek esetében.
  • 📅 Gyakorlati példák: Az előre elkészített bejegyzések ötpercenként, meghatározott hétköznapokon, havi futtatásokon és indítási feladatokonként is elérhetők.
  • 🤖 AI segítség: A mesterséges intelligencia asszisztensek és a GitHub Copilot másodpercek alatt képesek cron kifejezéseket generálni és elmagyarázni.

Crontab Linuxban - feladatütemezés példákkal

A Crontab, a cron table rövidítése, egy konfigurációs fájl és parancs, amely a meghajtót futtatja. Linux Feladatütemezés. Az alábbi szakaszok ismertetik a crontab formátumot, a feladatok hozzáadására, listázására és eltávolítására szolgáló parancsokat, a speciális @ karakterláncokat, valamint a használatra kész ütemezési példákat.

Mi az a crontab?

A Cron a görög „Chronos” szóból kapta a nevét, ami időt jelent. Ez egy rendszerfolyamat (démon), amely automatikusan végrehajtja a feladatokat egy beállított ütemezés szerint. A Cron egy parancskészlet, amely rendszeres ütemezett feladatok futtatására szolgál. A Crontab a „cron table” (cron tábla) rövidítése, és lehetővé teszi a cron feladatütemező használatát ezen feladatok végrehajtásához.

A Crontab a program neve is, amelyet az ütemezés szerkesztésére használnak. A programot egy crontab fájl vezérli – ez egy konfigurációs fájl, amely felsorolja a megadott ütemterv szerint periodikusan futtatandó shell parancsokat.

Miért érdemes Cron feladatokat használni?

Íme a cron feladatok használatának fő okai Linuxon:

  • Ütemezett biztonsági mentéseket készít a naplófájlokról vagy adatbázisokról.
  • Automatikusan törli a régi naplófájlokat.
  • Archimegtisztítja és kiüríti az adatbázis tábláit.
  • Értesítő e-maileket küld, például hírleveleket vagy jelszó lejárati emlékeztetőket.
  • Rendszeresen törli a gyorsítótárazott adatokat.
  • Automatizálja az ismétlődő Unix és Linux feladatokat.
  • Automatizálja a rendszeres rendszerkarbantartást.

Hogyan kell használni a cront Linuxon?

A Linux rendszercsomag tartalmaz egy hasznos feladatütemezőt, a crontab-ot. A Crontab népszerűsége abban rejlik, hogy egy feladatot root felhasználóként lehet futtatni, ami megkönnyíti az automatizált rendszermódosításokat. Egyszerűen csak egyszer módosítjuk a feladatot, majd megvárjuk, amíg az ütemterv szerint újra elindul.

Linux Crontab formátum

Egy Linux crontab bejegyzés hat mezőből áll. Az első öt mező a végrehajtás időpontját és dátumát határozza meg, a hatodik mező pedig a futtatandó parancsot tartalmazza.

Crontab szintaxis:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

Az alábbi ábra a crontab bejegyzésekben található minden csillagot leképez az általa vezérelt mezőre, perctől a hét napjáig, majd a végrehajtandó parancsot.

Linux crontab formátumdiagram, amely az öt időmezőt és a parancsot mutatja

Az öt időmező a következő értékeket fogadja el: perc (0–59), óra (0–23), a hónap napja (1–31), hónap (1–12 vagy jan–dec) és a hét napja (0–7, ahol a 0 és a 7 egyaránt vasárnapot jelent). Az egyes mezőket a következő speciális karakterekkel vezérelheti:

  • Csillag (*): Az adott mező összes lehetséges értékének megfelel.
  • Tartomány meghatározása: Tartomány megadásához használjon kötőjelet, például 1-10, 30-40, jan-már vagy hétfő-szer.
  • Több tartomány meghatározása: Használjon vesszőket a tartományok összevonásához, például ápr.-jún., okt.-dec.

A Crontab hozzáadása/módosítása

A felhasználók a következő crontab paranccsal szerkeszthetik saját crontab feladataikat. Az -u opció egy adott felhasználó crontabját célozza meg, ezért a felhasználónevet a későbbi példákban látható módon kell megadni:

$ crontab -u -e 

A fenti parancs megnyitja a rendszeredhez tartozó személyes crontab konfigurációt, amelyet az alapértelmezett szövegszerkesztőben szerkeszthetsz.

Nem kell újraindítani a cront; az automatikusan átveszi a módosításokat. Az aktuális feladatok megtekintéséhez használd a következőt:

$ crontab -l

A crontab feladatok eltávolításához használja a következő parancsot:

$ crontab -r

Egy feladat hozzáadásához vagy frissítéséhez a crontabban használja az alábbi parancsot:

crontab -e

Egy másik felhasználó crontabjának szerkesztéséhez nevezd el a felhasználót a -u kapcsolóval:

crontab -u username -e

Hogyan listázzuk ki a Crontabot

Az aktuális felhasználó crontab bejegyzéseinek megtekintéséhez:

crontab -l

Egy adott felhasználó crontab bejegyzéseinek megtekintéséhez:

crontab -u username -l

Fontos Crontab példák

Íme néhány fontos, használatra kész példa a crontab ütemezésekre:

Leírás parancs
Futtatja a különböző ütemezési feladatokat. Az alábbi parancs naponta reggel 7-kor és délután 5-kor fut.
0 7,17 * * * /scripts/script.sh
5 percenként végrehajt egy cron feladatot.
*/5* * * * *  /scripts/script.sh
Végrehajtja a feladatot minden Monday hajnali 5-kor. Ez hasznos a heti feladatokhoz, például a rendszer tisztításához.
0 5 * * mon  /scripts/script.sh
3 perces időközönként futtatja a szkriptet.
*/3 * * * * /scripts/monitor.sh
Cron feladatot ütemez, amely meghatározott hónapokban fut – itt februárban, júniusban és szeptemberben.
* * * feb,jun,sep *  /script/script.sh
A kiválasztott napokon fut le. Ez a példa minden nap lefut. Monday és szerdán 5 órakor.
0 17 * * mon,wed  /script/script.sh
Lehetővé teszi a cron futtatását minden hónap első szombatján.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
6 órás időközönként futtat egy szkriptet, az alábbiak szerint konfigurálva.
0 */6 * * * /scripts/script.sh
Feladat kétszeri végrehajtására ütemez Monday és kedden. Ehhez használja a következő beállításokat.
0 4,17 * * mon,tue /scripts/script.sh
Cron feladat végrehajtását ütemezi 15 másodpercenként.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Évente ütemezi a feladatokat. Az @yearly paraméter hasonló a „0 0 1 1 *” paraméterhez. Évente egyszer, január 1-jén éjfélkor futtatja le a feladatot – ez hasznos az újévi üdvözletekhez.
@yearly /scripts/script.sh 
Havonta futtatja a feladatokat. A @monthly paraméter értéke hasonló a „0 0 1 * *” paraméterhez. Minden hónap első napján éjfélkor futtatja a feladatot.
@monthly /scripts/script.sh
Több feladatot hajt végre egyetlen cron bejegyzés használatával.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Heti rendszerességgel ütemezi a feladatokat. A @weekly hasonló a „0 0 * * 0”-hoz. Heti feladatokat futtat, például minden vasárnap éjfélkor a rendszer tisztítását.
@weekly /bin/script.sh
Naponta ütemezi a feladatokat. A @daily paraméter hasonló a „0 0 * * *” paraméterhez. Naponta egyszer, éjfélkor futtatja a feladatot.
@daily /scripts/script.sh
Óránként futtatja a feladatokat. A @hourly hasonló a „0 * * * *” értékhez. Minden óra elején futtatja a feladatot.
@hourly /scripts/script.sh
Feladatokat futtat a rendszer újraindításakor. A @reboot parancs hasznos azoknál a feladatoknál, amelyeket a rendszernek indításkor kell futtatnia, lehetővé téve a háttérben futó feladatok automatikus elindítását.
@reboot /scripts/script.sh

GYIK

A felhasználói crontabok a /var/spool/cron/ (vagy /var/spool/cron/crontabs/) könyvtárban tárolódnak Debian rendszeren és Ubuntu), míg a rendszerszintű ütemterv az /etc/crontab és az /etc/cron.d könyvtárakban található. A felhasználói crontab fájlokat mindig a crontab -e paranccsal szerkessze, ahelyett, hogy közvetlenül megnyitná azokat.

A Cron csak a pontos ütemezett időben futtatja a feladatokat, és kihagyja őket, ha a gép ki van kapcsolva. tracks kihagyott feladatokat és lefuttatja azokat, amint a rendszer újraindul, így olyan laptopokhoz és asztali számítógépekhez is megfelelő, amelyek nem mindig futnak.

A Cron minimális környezetet használ, így a korlátozott PATH a leggyakoribb ok. Használj abszolút elérési utakat a parancsokhoz és szkriptekhez, tedd a szkriptet futtathatóvá, és irányítsd át a kimenetet egy naplófájlba, hogy a hibákat rögzíthesd a hibakereséshez.

A >> /path/to/logfile 2>&1 fűzd hozzá a parancshoz a standard kimenet és a hibák fájlban történő rögzítéséhez. Alternatív megoldásként állítsd be a crontab tetején található MAILTO változót, hogy a cron minden egyes feladat kimenetét erre a címre küldje.

Az /etc/cron.allow és az /etc/cron.deny fájlok szabályozzák a hozzáférést. Ha a cron.allow létezik, akkor csak az abban felsorolt ​​felhasználók használhatják a crontab-ot. Ha csak a cron.deny létezik, akkor a felsoroltakon kívül minden felhasználó ütemezhet feladatokat.

Egy crontab -e paranccsal létrehozott felhasználói crontab fájl öt időmezőt tartalmaz, amelyeket a parancs követ. Az /etc/crontab rendszerfájl hozzáad egy mezőt, amely megnevezi a feladatot futtató felhasználót, a perc, óra, nap, hónap, hét napja, felhasználó, majd a parancs mezőket.

Igen. A gépi tanulási eszközök képesek alapként meghatározni a normál feladatok futási és befejezési idejét, majd megjelölni az olyan anomáliákat, mint a túl sokáig futó, csendben meghiúsuló vagy az ütemtervtől elmaradó feladatok. A mesterséges intelligencia naplóelemzése a kapcsolódó hibákat is csoportosítja, hogy felgyorsítsa a kiváltó okok feltárását.

Igen. GitHub másodpilóta cron kifejezéseket tud generálni egy egyszerű angol megjegyzésből, el tudja magyarázni, hogy mit csinál egy ütemezés, mint például a */5 * * * *, és meg tudja vázolni a jobok által futtatott shell szkriptet. Mindig tesztelje a kifejezést, mielőtt hozzáadná egy éles crontabhoz.

Foglald össze ezt a bejegyzést a következőképpen: