Crontab Linux alatt – valós idejű példákkal és eszközökkel

Fedezze fel a crontabot, annak parancsait és a Crontabhoz kapcsolódó különféle műveleteket.

Megtanuljuk a feladatok ütemezését a cron segédprogrammal, és végül néhány online eszközről is szót ejtünk, amelyek segítenek a cron parancsok formázásában és tesztelésében.

Tartalomjegyzék

Eredet

A Crontab a „cron table” rövidítése. A cron szó a görög Chronos szóból származik, ami időt jelent. A Crontab egy rendszerdémon folyamat, amely automatikusan végrehajt bizonyos feladatokat és feladatokat az ütemezett időpontban.

  Kali Linux alkalmazások telepítése a Debianban

Használati esetek

A Crontab hasznos különféle műveletek végrehajtására, mint például az automatikus biztonsági mentés kezelése, a naplófájlok forgatása, a fájlok szinkronizálása a távoli gépek között és az ideiglenes mappák törlése stb. A Crontab bármilyen munkára használható, de különösen akkor válik hasznossá, amikor elkezdünk foglalkozni rendszeradminisztrációs munkatípus.

A cron használatával az adminisztrátor beütemezheti a feladatot egy adott időpontra és napra.

Lássuk tehát, hogyan tudjuk ezt beállítani.

Crontab szintaxis

A parancsok listájának végrehajtásához a cron segédprogram beolvassa a konfigurációs fájlokat. A crontab konfigurációs táblákban lévő sorok értelmezéséhez a Crontab szintaxist követi. A Crontab hat mezővel rendelkezik, és az első öt (1-5) mező határozza meg a végrehajtás dátumát és időpontját. Az utolsó mező, azaz a 6. mező lehet egy felhasználónév és/vagy a végrehajtandó feladat /job/command/script.

* * * * * USER_NAME COMMAND/SCRIPT-TO-VÉGREHAJTÁS

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ A hét napja (0–6) (0 a vasárnap, vagy használjon neveket)
│ │ │ |____________ hónap (1–12),* minden hónap
│ │ |__________________ A hónap napja (1-31),* minden nap
│ |________________ Óra (0–23),* minden órát jelent
|_______________________ Perc (0–59), * minden percet jelent

Megjegyzések:

  • Csillag
  • a mező összes lehetséges értékének egyeztetésére szolgál. Például az óra mezőben használt csillag minden órával, vagy a hónap mezőben lévő csillag minden hónapnak felel meg.

a felhasználónév nem kötelező (csak akkor érhető el, ha a rendszer crontab fájlja)

Példák:

Nézzük meg néhány példával a fenti szintaxist

0 5 * * * /scripts/job.sh

1. Ütemezze be a cron végrehajtását naponta 5:00-ra

0 6,18 * * * /scripts/job.sh

2. Ütemezze be a cron végrehajtását naponta kétszer reggel 6 és 18 órakor

* * * * * /scripts/job.sh

3. Ütemezzen be egy cron végrehajtását percenként

0 19 * * mon /scripts/job.sh

4. Ütemezze be a cron végrehajtását minden hétfőn 19 órára.

*/10 * * * * /scripts/job.sh

5. Ütemezze be a cron végrehajtását 15 percenként.

* * * feb,jun,oct * /script/job.sh

6. Ütemezze be a cron végrehajtását a kiválasztott hónapokra

25 7 4 3 * /home/script/backup.sh

7. Futtassa a /home/script/backup.sh shell szkriptet március 4-én 7:25-kor.

8. Ütemezze be a cron 30 másodpercenkénti végrehajtását

  • Mivel a Crontabban a másodpercek felett nem rendelkezünk, de az alábbi kétlépéses folyamattal elérhetjük.
* * * * * /home/scripts/script.sh
  • Először ütemezzünk be egy percenként futó feladatot.
* * * * * sleep 30; /home/scripts/script.sh

Most használjuk az alvás parancsot a végrehajtás szüneteltetésére 30 másodpercre.

A fenti feladat 30 másodpercre leállítja a végrehajtást, és újra folytatódik.

Cron konfigurációs fájlok típusa

Kétféle Cron konfigurációs fájl létezik:

A UNIX/Linux rendszer Crontab

Ehhez root jogosultság szükséges, mivel általában rendszerszolgáltatásokhoz és kritikus feladatokhoz használják. A hatodik mező (a fenti szintaxisleírásban) annak a felhasználónak a neve, amelyen a parancs fut. Lehetővé teszi a rendszer crontab számára, hogy parancsokat futtasson, mint bármely felhasználó.

  Hogyan hozzunk létre Linux NAS-t az Amahi segítségével

A felhasználó Crontab

A felhasználó saját cron-feladatait is telepítheti a crontab paranccsal. Itt is a hatodik mező (a fenti szintaxisleírásban) a futtatandó parancs, és minden parancs a crontabot létrehozó felhasználóként fut. Minden felhasználónak lehet saját crontab fájlja, és bár ezek a /var/spool/cron/crontabs fájlok, nem közvetlenül szerkeszthetők. A crontab parancsot kell használnunk a saját cron munkáink szerkesztéséhez vagy beállításához.

Hogyan működik? A cron szolgáltatás (démon) a háttérben fut, és folyamatosan (percenként) ellenőrzi az /etc/crontab fájlt és az /etc/cron.*/ könyvtárakat. Ellenőrzi a /var/spool/cron/ könyvtárat is. A parancsokat végrehajtja cron

ha a perc, óra és hónap mezők megegyeznek az aktuális idővel, és a kétnapos mezők (a hónap napja vagy a hét napja) legalább egyike megegyezik az aktuális nappal.

Alapvető parancsok

A meglévő Cron-állások listája

crontab -l

Kilistázhatjuk az összes Cron-feladatot a crontab konfigurációs fájl megnyitása nélkül az alábbi paranccsal

[[email protected] ~]# crontab -l
no crontab for etoppc.com
[[email protected] ~]#

Ha nincs meglévő feladat, akkor a kimenetet a következőként adja vissza

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Ha a felhasználó már hozzáadott néhány feladatot, akkor a következőképpen jelenik meg.

A Cron tábla felhasználófüggő, ami azt jelenti, hogy be kell jelentkeznie egy adott felhasználóval a cron tábla listájának megtekintéséhez.

Cron listázása adott felhasználó számára

Egy másik felhasználó ütemezett munkáinak listázásához használja a -u (Felhasználó) és -l (Lista) paramétereket.

crontab -u másik_felhasználónév -l

Példa: crontab -u etoppc.com -l

Crontab bejegyzések hozzáadása/módosítása

  Az 5 legjobban futó Linux disztribúció, amelyet kipróbálhat

A crontab bejegyzés szerkesztéséhez használhatjuk az -e opciót az alábbiak szerint.

crontab -e

A fenti parancs megnyitja a vi szerkesztőket, ahol megadhatja a feladat részleteit, és mentheti a fájlt. Mentés után a crontab -l segítségével ellenőrizheti, hogy a cron be van-e állítva vagy sem.

Adott felhasználóhoz tartozó Crontab bejegyzések hozzáadása/módosítása

crontab -u another_username -e

Az alábbi paranccsal szerkeszthetjük a crontab-ot egy másik felhasználó számára

Példa: crontab -u etoppc.com -e

Távolítsa el a Crontab bejegyzést

Használja a -r paramétert a Crontabnál a teljes ütemezett feladatok eltávolításához a crontab megerősítése nélkül

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete etoppc.com's crontab?

Ha megerősítést szeretne kapni az ütemezett feladatok törlése előtt, használja a -i kapcsolót az -r billentyűvel, amely megerősítést kér a felhasználótól, mielőtt törölné a felhasználó crontabját.

Crontab speciális karakterlánc

A fent tárgyalt szintaxison kívül nyolc, a Crontab által biztosított speciális karakterláncot is használhatunk. Nem csak az időnket takarítja meg, hanem javítja az olvashatóságot is.
Speciális húr
Leírás
@reboot
Futtassa egyszer, indítás után.
@évi
Fuss évente egyszer, azaz 0 0 1 1 *
@évente
Ugyanaz, mint @yearly
@havi
Fuss havonta egyszer, azaz 0 0 1 * *
@heti
Fuss hetente egyszer, azaz 0 0 * * 0
@napi
Fuss naponta egyszer, azaz 0 0 * * *
@éjfél
Ugyanaz, mint a @daily
@óránkénti

Fuss óránként egyszer, azaz 0 * * * *

Crontab speciális karakterlánc-példák

1. Crontab a feladatok éves ütemezéséhez

@yearly /scripts/greeting.sh

Egy feletti újévi üdvözletet tudunk végrehajtani, minden év első percében lefut.

2. A Crontab a feladatok havonta ütemezéséhez.

@monthly /scripts/cleanup.sh

A fentieket minden hónap elején elvégezhetjük bizonyos takarítási tevékenységek elvégzésére.

Hasonlóképpen használhatunk más Crontab speciális karakterláncokat heti, napi és óránkénti célokra.

Cron könyvtár

  • A rendszergazda használhat egy rendszerszintű cron ütemezést, amely az előre meghatározott cron könyvtárban található, az alábbiak szerint
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Crontab valós idejű példák

Nézzünk meg néhány valós idejű példát, amelyeket rendszerint a rendszergazdák vagy informatikusok használnak.

Törölje az üres fájlokat és könyvtárat

45 0 * * * etoppc.com find /tmp -type f -empty -delete

A cron kifejezés felett megtalálja az üres fájlokat és könyvtárat a /tmp könyvtárból, és törli őket. Ez a munka napi 12.45-kor indul. A feladat végrehajtásához meg kell említenünk a felhasználónevet. A fenti példában a etoppc.com felhasználó cron feladatot hajt végre.

Több feladat végrehajtása egyetlen cron használatával

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Több feladat/munka pontosvesszővel (;) elválasztható, és egyetlen cron kifejezéshez rendelhető.

Cron formázási és tesztelési eszközök

Eddig a feladat ütemezéséhez szükséges parancsokat és a crontab szintaxisát tárgyaltuk. De mi van akkor, ha Ön nem rendszergazda, és nem az a feladata, hogy rendszeresen beállítsa a Cront, előfordulhat, hogy nem lehet megjegyezni a szintaxist, és megnyílik a hibalehetőség. Ne aggódjon, van megoldásunk erre a problémára.

Számos Cron formázási eszköz elérhető az interneten.

# 1. Cron Job Generator Cron Job Generator

egy nagyon felhasználóbarát grafikus felület, ahol megadhatja a crontab létrehozásához szükséges szkript percét, napjait és elérési útját.

Vegyünk egy valós idejű példát, ahol hétfőtől péntekig 5 percenként kell végrehajtanom a /home/processMonitor.sh fájlt.

Tehát megkaptam az alábbi Cron szintaxist, amelyet végrehajtva be tudok helyezni a crontabba
crontab –e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

egy hasznos webalapú cron feladatütemező. A meghívandó URL megadásával létrehozhatunk cron feladatot, beállíthatjuk, hogy mikor kell végrehajtani. Megadhatunk cron kifejezést is, vagy kézzel is hozzáadhatunk egy leíró formából. Fontos, hogy opcionálisan használhatjuk az alapvető HTTP-hitelesítést egy kis szintű biztonság érdekében.

Nem csak ez, hanem az Easycron más célok elérésére is használható, mint például a szabványos Cron kifejezés, a Cron munkavégrehajtási naplók, az e-mail értesítések, a külön hibanaplók stb.

# 3. Crontab Generator Crontab generátor

egy másik praktikus eszköz a crontab generálásához, és ezzel az eszközzel azt is hozzáadhatja, ha el szeretné menteni a cron kimenetét a fájlba, vagy el szeretné küldeni e-mailre.

# 4. Crontab Guru Crontab Guru

egy egyszerű online cron ütemezési kifejezésszerkesztő. Ezen túlmenően, ez egy hasznos eszköz a cronjob figyelemmel kísérésére. Mindössze annyit kell tennünk, hogy másoljunk egy parancsot, és fűzzük hozzá a crontab definíció végéhez. Ha a cron feladat meghiúsul, vagy el sem indul, figyelmeztető e-mailt fog kapni.

Az alábbi példában a Job 04:05-kor fog végrehajtani, minden nap, minden hónapban és minden héten.

# 5. CRON teszter CRON teszter

lehetővé teszi a cron idő/dátum definíciók tesztelését. Előfordulhat olyan helyzet, amikor a meglévő cron szintaxist kell dekódolnunk a hibaelhárításhoz, vagy egyszerűen csak tesztet szeretnénk végezni.

Ehhez használhatjuk ezt az eszközt. Mindössze annyit kell tennünk, hogy másoljuk és illesszük be a cron kifejezést a cron definíciós mezőbe, majd válasszuk ki az iterációk számát, és kattintsunk a Teszt gombra, hogy megtekintsük a különböző dátumokat, amelyeken futni fog.

Ellenőrizzük az egyik cron kifejezést 4 3 */2 * *amelynek kétnaponta 03:04-kor kell futnia. Ellenőrizzük cron teszterrel.

Következtetés Remélem, a fentiek segítenek a Crontab jobb megértésében és a cron jobok beállításában. A feladatok ütemezése a Cronon keresztül a Linux Admin által végrehajtott számos feladat egyike. Ha érdekel a haladó készségek elsajátítása, nézd meg ezttanfolyam

.