A Linux Crontab fájl szerkesztése a munkák ütemezéséhez

Bevezetés

A cron nevű démon Linux alatt működik, amelyet rendszeres időközönként futtatnak.

Ennek módja, hogy ellenőrizze a rendszer egyes mappáit a parancsfájlok futtatásához. Például van egy /etc/cron.hourly mappa, /etc/cron.daily, /etc/cron.weekly és /etc/cron.monthly. Létezik egy / etc / crontab nevű fájl is.

Alapértelmezés szerint egyszerűen elhelyezhetsz parancsfájlokat a megfelelő mappákba, hogy rendszeres időközönként el tudj végezni őket.

Például nyisson egy terminál ablakot (a CTRL, ALT és T gombok megnyomásával), és futtassa a következő ls parancsot :

ls / etc / cron *

Megjelenik a programok vagy parancsfájlok óránkénti, napi, heti és havonta futó listája.

A baj ezekkel a mappákkal, hogy egy kicsit homályos. Például a napi azt jelenti, hogy a szkript naponta egyszer fut, de nincs ellenõrzése az idõ alatt, hogy a szkript futni fog ezen a napon.

Itt jön be a crontab fájl.

A crontab fájl szerkesztésével egy szkriptet vagy programot futtathat a pontos dátumra és időre, ahányszor futni akarsz. Például lehet, hogy a fájlokat minden este 18 órakor szeretné menteni.

Engedélyek

A crontab parancs megköveteli, hogy a felhasználó jogosult legyen egy crontab fájl szerkesztésére. Alapvetően két fájl található a crontab jogosultságok kezelésére:

Ha a /etc/cron.allow fájl létezik, akkor a crontab fájlt szerkesztő felhasználónak ebben a fájlban kell lennie. Ha a cron.allow fájl nem létezik, de létezik egy /etc/cron.deny fájl, akkor a felhasználónak nem szabad létenie a fájlban.

Ha mindkét fájl létezik, akkor a /etc/cron.allow felülbírálja az /etc/cron.deny fájlt.

Ha egyik fájl sem létezik, akkor a rendszer konfigurációjától függ, hogy a felhasználó szerkesztheti-e a crontab-ot.

A root felhasználó mindig szerkesztheti a crontab fájlt. A su paranccsal a root felhasználóra vagy a sudo parancsra ugorhat a crontab parancs futtatásához.

A Crontab fájl szerkesztése

Minden jogosultsággal rendelkező felhasználó saját crontab fájlt hozhat létre. A cron parancs alapvetően több crontab fájl létezését keresi, és mindezeken keresztül fut.

Annak ellenőrzéséhez, hogy van-e crontab fájlod, futtassa a következő parancsot:

crontab -l

Ha nincs crontab fájlod, a "no crontab for " üzenet megjelenik, ellenkező esetben a crontab fájl megjelenik (ez a funkció különbözik a rendszertől a rendszerig, néha semmit sem jelenít meg, és máskor nem jelenik meg " ne módosítsd ezt a fájlt ").

A crontab fájl létrehozásához vagy szerkesztéséhez hajtsa végre a következő parancsot:

crontab -e

Alapértelmezés szerint, ha nincs beállítva alapértelmezett szerkesztő, akkor meg kell adnia a használni kívánt alapértelmezett szerkesztőt. Személy szerint szeretem a nano használatát, mivel meglehetősen egyszerűen használják, és fut a terminálból.

A megnyíló fájlnak sok információja van, de a legfontosabb rész a kommentárok vége előtt található példa (a megjegyzéseket a # -al kezdődő sorok jelölik).

# mh dom mon dow parancs

0 5 * * 1 tar -zcf /var/backups/home.tgz / home /

A crontab fájl minden egyes sorára 6 információ található:

Minden egyes elemhez (kivéve a parancsot) meg lehet adni egy helyettesítő karaktert. Nézze meg a következő példát: crontab vonal:

30 18 * * * tar -zcf /var/backups/home.tgz / home /

Amit a fenti parancs mond: 30 perc, 18 óra, a hét minden napja, hónapja és napja futtat egy parancsot a zip könyvtárra és a ház könyvtárat a / var / backups mappába.

Ahhoz, hogy parancsot futtasson 30 perc múlva minden órában, a következő parancsot futtathatom:

30 * * * * parancs

Ahhoz, hogy egy parancsot futtasson minden perc múlva 18:00 óráig, a következő parancsot futtathatom:

* 18 * * * parancs

Ezért óvatosnak kell lennie a crontab parancsok beállításához.

Például:

* * * 1 * parancs

A fenti parancs januárban minden héten minden nap minden órájában futni fog. Kétlem, hogy ezt akarja.

Egy parancs futtatásához január 1-jén 5 órakor a crontab fájlt a következő paranccsal hajtotta végre:

0 5 1 1 * parancsot

Crontab fájl eltávolítása

Az idő nagy részében nem kívánja eltávolítani a crontab fájlt, de lehet, hogy bizonyos sorokat eltávolít a crontab fájlból.

Ha azonban el kívánja távolítani a felhasználó crontab fájlját, futtassa a következő parancsot:

crontab -r

Ennek biztonságosabb módja a következő parancs futtatása:

crontab -i

Ez megkérdezi a kérdést: "Biztos vagy benne?" mielőtt eltávolítaná a crontab fájlt.