Feladatok ütemezése Linuxon a Cron és a Crontab segítségével

Feladatok ütemezése Linuxon a Cron és a Crontab segítségével

Tudtad, hogy Pengefutó 2019 -ben játszódik? Ez három év múlva! Nem is említve Vissza a jövőbe 2 , ahol időutaznak előre 2015-ig. Mégsem vannak repülő autóink, és nincs köztünk replikátor (tudomásom szerint).





Könnyű csalódást okozni a jelenlegi technológiában, ha a jövő kitalált ábrázolásához hasonlítjuk. Ennek ellenére manapság telefonjaink, számítógépeink és még házaink is elképesztő dolgokra képesek. A feladatok automatizálásának képessége az egyik.





Minden Linux-felhasználó részesülhet az ütemezési feladatokból, függetlenül attól, hogy rendszerrel kapcsolatosak-e (például a régi naplók és a csomagok frissítése ) vagy a felhasználó kiszolgálása (e -mailek ellenőrzése, podcastok letöltése ...). A Windows felhasználóknak Windows 95 óta van Feladatütemezőjük. A Linuxon ugyanezt a feladatot ellátó segédprogramot cronnak hívják, és itt elmagyarázzuk, hogyan kell használni.





drag and drop játék készítő ingyenes

Mi az a Cron?

A Cron egy rendszerszolgáltatás, amely a háttérben fut, ellenőrzi az ütemezett feladatokat, és végrehajtja azokat, ha talál. A feladatokat - más néven „cron jobokat” - speciális konfigurációs fájlokban (crontabs) határozzák meg, amelyek a cron percenként ellenőrzik. A cron számos verziója megtalálható a különböző Linux disztribúciókban. Például Fedora cron villáját hívják cronie , és vannak is fcron , bcron , és dcron . Néhányuk extra funkciókkal rendelkezik, míg mások inkább a biztonságra összpontosítanak, de mindegyik ugyanazon az elképzelésen alapul.

Ez az útmutató a vixie-cron számára készült, amely a cron legelterjedtebb változata, és amelyet az Ubuntu és származékai között talál. Bár a legtöbb utasítás más cron megvalósításokra is vonatkozik, előfordulhatnak kisebb eltérések, ezért nézze át a kézikönyveket, ha úgy dönt, hogy vált.



Mi az a Crontab?

Ha komolyan gondolja az időgazdálkodást, akkor valószínűleg van valamilyen naptára - egy alkalmazás vagy legalább egy darab papír. A Crontab nagyon hasonlít a számítógép naptárához. Tartalmazza az ütemezett feladatokra vonatkozó információkat, és megmondja a cronnak, hogy mely parancsokat mikor futtassa.

Valójában több crontab van a rendszeren. Minden felhasználónak saját crontabja van, beleértve a root -t (a rendszergazdát). A felhasználói crontabok itt tárolódnak





/var/spool/cron/crontabs/

. Az

crontab -l

parancs felsorolja az aktuális felhasználó crontab fájlját. A gyökér crontabot a gombbal ellenőrizheti





sudo crontab -l

.

Ezenkívül ott van a rendszer crontab fájlja

/etc/crontab

amelyet rendszerszintű feladatokra használnak. Általában futtatható, root tulajdonú szkriptek formájában jelennek meg

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, és

/etc/cron.monthly/

mappák, egyes terjesztések esetén pedig a

/etc/cron.d/

mappa is. Általánosságban elmondható, hogy nem kell foglalkoznia ezekkel a feladatokkal, mivel a legtöbbet a telepített alkalmazások automatikusan hozzák létre.

Feladatok ütemezése Cronnal

Egyszerűen hangzik: a feladatok ütemezéséhez csak adja hozzá őket a crontabhoz. Mivel a crontab egy speciális konfigurációs fájl, nem ajánlott manuálisan szerkeszteni. Ehelyett használja a

crontab -e

parancs. A root vagy más felhasználók crontabjainak szerkesztéséhez futtassa a parancsot adminisztrátori jogosultságokkal, és adja hozzá felhasználónevét a -u opció után:

sudo crontab -u root -e
sudo crontab -u username -e

A crontab fájl két részből áll. Az első környezeti változókat tartalmaz, amelyeket automatikusan beállít. Biztonságosan megváltoztathatja a PATH, HOME és SHELL változókat, és módosíthatja a MAIL változót.

A fájl második része az aktuális ütemterv az ütemezett feladataival. Minden feladat egy sort (sort) foglal el a táblázatban, a következő értékeket tartalmazó oszlopokkal:

A feladatok sikeres ütemezéséhez tudnia kell egy kicsit a crontab szintaxisáról:

  • A számoknak egész számoknak (egész számoknak) kell lenniük, és a csillagot (*) bármely oszlopban használhatja helyettesítő karakterként, azaz „minden perc/nap/hónap ...”.
  • A „Hónap” oszlopban ügyeljen arra, hogy ne állítson be olyan dátumot, amely nem a „Hónap” oszlopban meghatározott hónapban történik (például február 30.).
  • Mind a „Hónap”, mind a „Hét napja” oszlopok rövid neveket fogadnak el hónapokra, illetve napokra, és nem különböztetik meg a kis- és nagybetűket.
  • A „Hét napja” oszlopban a 0 és a 7 jelzi a vasárnapot. Az „Óra” oszlop megköveteli a „katonai idő” (24 órás) formátumot, de nem használhatja a 24 számot-ehelyett a 0 12 órát jelent. Ez azért van, mert a perc, az óra és a hét napja kezdődik 0 helyett 1 helyett.
  • A másodpercek nem támogatottak, így nem ütemezhet feladatot egy adott másodpercre.

Ön elvégezheti a befogadó időtartományok ütemezését kötőjellel (14-22 óra 'Óra' alatt folyamatosan futtatja a feladatot 14:00 és 22:00 óra között), vagy egy feladatot többször is futtathat egy vesszővel elválasztott lista meghatározásával (1, 3,5 a „Hét napja” alatt hétfőn, szerdán és pénteken futtatja a feladatot).

Eközben a lépésértékeket egy perjel (/) jelöli, és ezek a tartományon belüli kihagyások mennyiségét jelzik; például a 3-20/3 az „Óra” alatt három óránként futtatja a feladatot hajnali 3 és este 8 óra között. Ez akkor hasznos, ha X óránként szeretné megismételni a feladatokat, mert kombinálhat egy csillagot és egy lépést (*/X). Amíg számokat használ, kombinálhatja a tartományokat listákkal és lépésekkel a tartományokkal. Más szavakkal, az olyan kombinációk, mint a „jan-mar” vagy a „K, P-P”, nem megengedettek.

Alternatív megoldásként, ahelyett, hogy minden oszlophoz beállítana egy értéket, egyszerűen írjon @weekly, @yearly, @honthly, @daily vagy @hourly a sor elejére, majd egy parancsot. Az ilyen ütemezés szerint a feladatok az első lehetséges példányon futnak, így a @weekly a hét első napjának éjfélkor futna. Ha a rendszer (újra) indításakor azonnal szeretne futtatni egy feladatot, használja a @reboot parancsot.

Ebben a példában minden napra ütemezünk biztonsági mentést 08: 20 -kor és 20: 20 -kor. A háttérkép automatikusan változik háromnaponta 19:00 órakor, és a forgatókönyv minden hétfőn 10: 20 -kor és 20: 20 -kor ellenőrzi az új podcastokat. A születésnapi emlékeztető március 25-re van beállítva, és 30 percenként fut a megadott időkereten belül. Végül egy szkript 15 percenként ellenőrzi az e -maileket 8 -tól 20 -ig, de csak munkanapokon. Szabadon rendezheti a crontabot szóközökkel és tabulátorokkal az oszlopok között, de nem azokon belül (ne tegyen szóközt vessző, kötőjelek és perjelek közé).

Ha mindez túl bonyolultnak tűnik, ne aggódjon - mindig bízhat az internetben. Olyan eszközök, mint Crontab generátor , Crontab.guru , és a Corntab segít létrehozni cron feladatokat anélkül, hogy ismerné a crontab szintaxisát. Megmutatják, hogy a feladat mikor fog futni, és sablonokat biztosítanak a gyakran használt kifejezésekhez. A Crontab.guru a legjobb a csoportban, mert lehetővé teszi a crontab szintaxisának élő tesztelését, így azonnal láthatja, hogy a változtatások hogyan befolyásolják az ütemtervet.

Hogyan lehet ellenőrizni, hogy a Cron feladatok végrehajtásra kerülnek -e

A Cronnak csendben kell futnia a háttérben, és zavartalanul kell dolgoznia, miközben gondoskodik a feladatairól. De hogyan lehet megbizonyosodni arról, hogy valóban működik?

A Cron rendelkezik beépített e-mail értesítési funkcióval, de ehhez legalább egy egyszerű helyi levelezőszervert kell beállítani. Nem sok otthoni felhasználó hajlandó ezt konfigurálni, és nem sok disztribúció biztosítja ezt alapértelmezés szerint (például az Ubuntu nem). A cron ellenőrzésének leggyorsabb módja a rendszernapló beolvasása ezzel a paranccsal:

cat /var/log/syslog | grep -i cron

Az -i opció megkülönbözteti a lekérdezésünket a kis- és nagybetűk megkülönböztetésétől. Lehetséges, hogy a cron saját naplófájlja lesz valahol

/var/log/

, nézzen oda, ha ez a parancs nem hoz hasznos eredményeket.

Ha el kell mentenie egy adott cron feladat kimenetét, átirányíthatja azt egy fájlba. Adja meg a fájl elérési útját és nevét a crontab utolsó oszlopában, a futtatni kívánt parancs után:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Egyetlen> szimbólum használata felülírja a fájlt minden parancs futtatásakor. Ennek elkerülése érdekében használja a >> lehetőséget - a kimenetet a meglévő fájlhoz fűzi.

Mi van, ha a Cron nem működik?

Előfordulhat, hogy hozzáadott néhány feladatot, ellenőrizte a rendszernaplókat, és azt tapasztalta, hogy nem hajtják végre megfelelően a feladatokat. Íme néhány dolog, amelyet figyelembe kell vennie - és legyen óvatos - a probléma megoldása során.

A cron szolgáltatás fut?

Mint tudod, a cron démonnak a háttérben kell futnia. Győződjön meg róla, hogy ez valóban így van. A szolgáltatást vagy crondnak, vagy csak cronnak hívják.

A systemd -t használó disztribúciókhoz:

systemctl status cron

Az Upstartot használó disztribúciókhoz:

service cron status

Ha a disztribúció a „régi” System V init megközelítést használja, sorolja fel az összes olyan szolgáltatást, amely:

hirdetéseket kapok a telefonomra
initctl list

és nézd meg, hogy szerepel -e a cron.

Megengedett még egy crontab fájl is?

Ellenőrizd a

/etc

nevű fájlok mappája

cron.allow

és

cron.deny

. Az Ubuntun egyik sem létezhet, ami azt jelenti, hogy minden felhasználó kezelheti a cron feladatokat. Ha azonban van egy

hogyan telepítsem a linuxot egy chromebookra
cron.allow

fájlt, annak tartalmaznia kell a felhasználónevét. Fordítva, ha a

cron.deny

fájl létezik, a felhasználóneve nem lehet benne. Elhagyva a

cron.deny

üres fájl azt jelenti, hogy csak a root és a felhasználók szerepelnek

cron.allow

crontab fájlokat tartalmazhat.

A változók megfelelően vannak beállítva?

A Crontab automatikusan a SHELL változót állítja be

/bin/sh

. Ha azonban a választott kagylója a hal vagy bash, meg kell változtatni a SHELL változót

. Hasonlóképpen, a PATH változó alapértelmezés szerint csak néhány könyvtárat tartalmaz. A crontab itt keresi a Linux parancsokat. Ha a cron feladat nem fut, az lehet, hogy a crontab nem látja a használt parancsot. Ennek elkerülése érdekében adja hozzá a parancsokat tartalmazó könyvtárakat a PATH változóhoz, kettősponttal elválasztva:

PATH =/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ha nem szeretné ezt szerkeszteni a crontab -ban, akkor ezeket a változókat a cron -feladatként futtatni kívánt szkriptben határozhatja meg.

A crontab formázása megfelelő?

A Crontab szintaxisa nem éppen zökkenőmentes. Még ha a korábban említett online eszközökkel is igazolja, egy kisebb hiba továbbra is megakadályozhatja a cron végrehajtását. Legyen óvatos:

  • adjon hozzá egy üres sort a crontab fájl végéhez
  • menjen a % előjelből fordított perjelezéssel, ha a parancs tartalmazza
  • írjon megjegyzéseket külön sorként #-al kezdődően. Ne írjon megjegyzéseket a környezeti változókkal egy sorba, vagy a cron jobparancsok mellé.

Valóban használni kell a terminált?

Egyáltalán nem. A KDE felhasználók ütemezhetik a cron feladatokat a KCron segítségével, amely elérhető a Rendszerbeállítások> Feladatütemező modul. Egyszerű kezelőfelülettel, amely lehetővé teszi, hogy néhány egérkattintással mindent kiválaszthasson és módosíthasson, a KCron örömmel használható.

Ha jobban szereted a GNOME -t, akkor GNOME ütemezés neked. A megközelítés hasonló, bár a felület várhatóan kissé eltér. Fejlett módot kínál a finom módosításokhoz, és egy panel kisalkalmazással rendelkezik, amelyből közvetlenül kezelheti a feladatokat.

Tudnia kell más megoldásokról is, mint pl Crontab-UI és Minicron . Ezek jobban megfelelnek azoknak a felhasználóknak, akik több gépet és cron feladatot kezelnek, és egyik legmenőbb funkciójuk a webalapú felület.

Vannak Cron alternatívák?

Bár a cron nagyjából a Linux szabványos feladatütemezője, biztosan nem az egyetlen. Az parancsra tökéletes a gyors, egyszeri munkákhoz, amelyek közvetlenül a parancssorból ütemezhetők, speciális konfigurációs fájlok nélkül. Ha több kell, akkor van GNUbatch , amely bevezeti a függőség fogalmát. A GNUbatch segítségével minden feladathoz meghatározott feltételeket állíthat be, vagy az ütemezett feladatot az előzőtől függővé teheti. Valami hasonlót lehet vele elérni rendszer időzítők . Bár a konfigurálás kevésbé praktikus, mint a cron, a systemd időzítők emlékeznek, ha egy feladat lekéste az ütemtervet a számítógép kikapcsolt állapotában, és futtathatják azt a következő bekapcsoláskor.

Ezt a cron egyedül nem tudja megtenni. Így alkalmas kiszolgálókra és számítógépekre, amelyek folyamatosan futnak, de nem hajt végre olyan feladatot, amelyet a számítógép kikapcsolt állapotában ütemeztek. Ez az, ahol anakron játékba lép. Ez technikailag nem „alternatíva” vagy a cron helyettesítője. Ehelyett az anacron kiegészíti a cron-t, és mellette kell használni, ami sok Linux-disztribúció esetében is így van, beleértve az Ubuntu és az Ubuntu-alapú termékeket. Az Anacron naplózza, hogy mikor hajtottak végre egy feladatot utoljára, és ellenőrzi, hogy hiányoztak -e kihagyott példányok a rendszer kikapcsolt állapotában. Futtatni fogja őket, amikor újra bekapcsolja a számítógépet, de minden feladat naponta egyszer végrehajtható.

A cron egyes verziói, például az fcron, alapértelmezés szerint az anacron szolgáltatásait kínálják. Haladó felhasználók érdemes megnézni Hcron vagy SuperCron , amelyek számos fejlesztést hoznak az alapvető cron -funkciókban, de némileg nehezen kezelhetők is.

Mi van veled? Hogyan szervezi a digitális feladatait? Milyen feladatokat ütemez Linux alatt? Ossza meg történeteit és tippjeit a cron használatával kapcsolatban megjegyzésekben.

Kép jóváírása: menetrendi tábla írta: Gonzalo Aragon a Shutterstockon keresztül

Részvény Részvény Csipog Email 12 videó webhely, amelyek jobbak, mint a YouTube

Íme néhány alternatív videó webhely a YouTube -hoz. Mindegyik más rést foglal el, de érdemes hozzáadni a könyvjelzőkhöz.

Olvassa tovább
Kapcsolódó témák
  • Linux
  • Linux
A szerzőről Ivana Isadora Devcic(24 cikk megjelent)

Ivana Isadora szabadúszó író és fordító, Linux -szerető és KDE -rajongó. Támogatja és népszerűsíti az ingyenes és nyílt forráskódú szoftvereket, és mindig friss, innovatív alkalmazásokat keres. Tudja meg, hogyan léphet kapcsolatba itt .

Ivana Isadora Devcic további alkotásai

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide