Crontab v Linuxu – s příklady a nástroji v reálném čase

Pojďme prozkoumat crontab, jeho příkazy a různé operace spojené s Crontabem.

Naučíme se plánovat úlohy pomocí nástroje cron a na závěr si probereme některé online nástroje, které nám pomáhají s formátováním a testováním příkazů cron.

Table of Contents

Původ

Crontab je zkratka pro „cron table“. Slovo cron bylo převzato z řeckého slova Chronos, což znamená čas. Crontab je proces systémového démona, který bude automaticky provádět některé úkoly a úlohy podle naplánovaného času.

  Skrýt/odkrýt Spotlight Search z panelu nabídek v OS X

Případy užití

Crontab je užitečný k provádění různých operací, jako je zpracování automatizovaného zálohování, rotace souborů protokolu, synchronizace souborů mezi vzdálenými počítači a vymazání dočasných složek atd. Crontab lze použít pro jakýkoli druh práce, ale stane se zvláště užitečným, když se začneme zabývat správa systému typ práce.

Pomocí cronu může správce naplánovat spuštění úlohy v konkrétní čas a den.

Pojďme se tedy podívat, jak to můžeme nastavit.

Syntaxe Crontab

Chcete-li provést seznam příkazů, obslužný program cron načte konfigurační soubory. Pro interpretaci řádků v konfiguračních tabulkách crontab se řídí syntaxí Crontab. Crontab má šest polí a prvních pět (1-5) polí definuje datum a čas spuštění. Poslední pole, tj. 6. pole, může být uživatelské jméno a/nebo úkol /job/command/script, který se má provést.

* * * * * PŘÍKAZ/PROVEDENÍ SKRIPTU JMÉNO UŽIVATELE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Den v týdnu (0 – 6) (0 je neděle, nebo použijte jména)
│ │ │ |____________ Měsíc (1 – 12),* znamená každý měsíc
│ │ |______________ Den v měsíci (1 – 31),* znamená každý den
│ |________________ Hodina (0 – 23),* znamená každou hodinu
|___________________ Minuta (0 – 59), * znamená každou minutu

Poznámky:

  • Hvězdička
  • se používá pro shodu všech možných hodnot pro pole. Například hvězdička použitá v poli hodin by byla ekvivalentní každé hodině nebo hvězdička v poli měsíc by odpovídala každému měsíci.

uživatelské jméno je volitelné (dostupné pouze v případě, že se jedná o systémový soubor crontab)

Příklady:

Pojďme pochopit výše uvedenou syntaxi na několika příkladech

0 5 * * * /scripts/job.sh

1. Naplánujte spuštění cronu na 5:00 denně

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

2. Naplánujte spuštění cronu dvakrát denně v 6:00 a 18:00

* * * * * /scripts/job.sh

3. Naplánujte spuštění cronu každou minutu

0 19 * * mon /scripts/job.sh

4. Naplánujte spuštění cronu každé pondělí v 19:00.

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

5. Naplánujte spuštění cronu každých 15 minut.

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

6. Naplánujte spuštění cronu na vybrané měsíce

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

7. Spusťte shell skript /home/script/backup.sh 4. března v 7:25

8. Naplánujte spuštění cronu každých 30 sekund

  • Vzhledem k tomu, že nemáme kontrolu nad sekundami v Crontabu, můžeme toho dosáhnout prostřednictvím níže uvedeného dvoufázového procesu.
* * * * * /home/scripts/script.sh
  • Nejprve naplánujme úlohu, která se spouští každou minutu.
* * * * * sleep 30; /home/scripts/script.sh

Nyní pomocí příkazu sleep pozastavíme provádění na 30 sekund.

Výše uvedená úloha zastaví provádění na 30 sekund a bude znovu pokračovat.

Typ konfiguračních souborů Cron

  Soubory iCloud se nestahují na iPhone a iPad? 10 tipů, jak tento problém vyřešit!

Existují dva typy konfiguračních souborů Cron:

Systém UNIX/Linux Crontab

To vyžaduje oprávnění root, protože se obvykle používá pro systémové služby a kritické úlohy. Šesté pole (ve výše uvedeném popisu syntaxe) je jméno uživatele, pod kterým se má příkaz spustit. Umožňuje systému crontab spouštět příkazy jako jakýkoli uživatel.

Uživatel Crontab

Uživatel může také nainstalovat své vlastní úlohy cron pomocí příkazu crontab. Zde je také šesté pole (ve výše uvedeném popisu syntaxe) příkaz ke spuštění a všechny příkazy se spouštějí jako uživatel, který vytvořil crontab. Každý uživatel může mít svůj vlastní soubor crontab, a přestože se jedná o soubory ve /var/spool/cron/crontabs, nejsou určeny k přímé úpravě. Potřebujeme použít příkaz crontab pro úpravy nebo nastavení našich vlastních úloh cronu.

Jak to funguje? Služba cron (démon) běží na pozadí a neustále kontroluje (každou minutu) soubor /etc/crontab a adresáře /etc/cron.*/. Kontroluje také adresář /var/spool/cron/. Příkazy jsou prováděny pomocí cron

když pole minuta, hodina a měsíc odpovídají aktuálnímu času a alespoň jedno z dvoudenních polí (den v měsíci nebo den v týdnu) odpovídá aktuálnímu dni.

Základní příkazy

Výpis existujících Cron Jobs

crontab -l

Můžeme vypsat všechny úlohy Cron bez otevření konfiguračního souboru crontab pomocí příkazu níže

[[email protected] ~]# crontab -l
no crontab for etechblog.cz
[[email protected] ~]#

Pokud neexistuje žádná existující úloha, vrátí výstup jako

[[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] ~]#

Pokud uživatel již přidal některé úlohy, zobrazí se následovně.

Tabulka cron je specifická pro uživatele, což znamená, že pro zobrazení seznamu tabulek cron musíte být přihlášeni s konkrétním uživatelem.

Seznam Cron pro konkrétního uživatele

Chcete-li vypsat naplánované úlohy jiného uživatele, použijte volbu jako -u (Uživatel) a -l (Seznam).

crontab -u jiné_uživatelské_jméno -l

  Jak spustit Chrome v režimu inkognito pomocí zástupce na ploše

Příklad: crontab -u etechblog.cz -l

Přidat/upravit položky Crontab

Chcete-li upravit položku crontab, můžeme použít volbu -e, jak je uvedeno níže.

crontab -e

Výše uvedený příkaz otevře editory vi, kde zadáte podrobnosti o úloze a uložíte soubor. Po uložení můžete ověřit, zda je cron nakonfigurován nebo ne, pomocí crontab -l.

Přidat/upravit položky Crontab pro konkrétního uživatele

crontab -u another_username -e

Pomocí níže uvedeného příkazu můžeme upravit crontab pro jiného uživatele

Příklad: crontab -u etechblog.cz -e

Odstraňte položku Crontab

Použijte parametr -r s Crontabem k odstranění dokončených naplánovaných úloh bez potvrzení z crontab

crontab -r

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

Pokud chcete potvrzení před odstraněním naplánovaných úloh, použijte volbu -i s -r, která před odstraněním crontab uživatele vyzve k potvrzení od uživatele.

Speciální struna Crontab

Kromě výše uvedené syntaxe, kterou jsme probrali, můžeme také použít osm speciálních řetězců poskytovaných Crontabem. Ušetří nám to nejen čas, ale také zlepší čitelnost.
Speciální provázek
Popis
@restartovat
Spustit jednou po spuštění.
@roční
Spustit jednou ročně, tj. 0 0 1 1 *
@každoročně
Stejně jako @yearly
@měsíční
Spustit jednou za měsíc, tj. 0 0 1 * *
@týdně
Spustit jednou týdně, tj. 0 0 * * 0
@denně
Spustit jednou denně, tj. 0 0 * * *
@půlnoc
Stejně jako @daily
@hodinově

Spustit jednou za hodinu, tj. 0 * * * *

Příklady speciálních řetězců Crontab

1. Crontab pro plánování úkolů na roční bázi

@yearly /scripts/greeting.sh

Můžeme provést výše uvedený pro zaslání novoročního pozdravu, Provede se v první minutě každého roku.

2. Crontab pro plánování úloh, které se mají provádět na měsíční bázi.

@monthly /scripts/cleanup.sh

Můžeme provést výše uvedený a provést některé úklidové činnosti na začátku každého měsíce.

Podobně můžeme použít další speciální řetězec Crontab pro týdenní, denní a hodinové účely.

Adresář Cron

  • Správce systému může použít plán cronu pro celý systém, který se nachází v předdefinovaném adresáři cronu, jak je znázorněno níže
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Příklady Crontab v reálném čase

Pojďme diskutovat o některých příkladech v reálném čase, které obvykle používají správci systému nebo IT profesionálové.

Odstraňte prázdné soubory a adresář

45 0 * * * etechblog.cz najít /tmp -type f -empty -delete

Nad výrazem cron najde prázdné soubory a adresář z adresáře /tmp a smaže je. Tato úloha bude probíhat denně ve 12:45. K provedení této úlohy musíme uvést uživatelské jméno. Ve výše uvedeném příkladu uživatel etechblog.cz provádí operaci úlohy cron.

Provádějte více úloh pomocí jednoho cronu

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

Více úkolů/úloh lze oddělit středníkem(;) a lze je přiřadit k jednomu výrazu cron.

Cron formátovací a testovací nástroje

Dosud jsme diskutovali o příkazech a syntaxi crontab pro plánování úlohy. Ale co když nejste správce systému a vaším úkolem není pravidelně nastavovat Cron, nemusí být možné zapamatovat si syntaxi a otevírá prostor pro chyby. Nebojte se, máme řešení tohoto problému.

Na internetu je k dispozici několik nástrojů pro formátování Cron.

# 1. Cron Job Generator Generátor úloh Cron

je velmi uživatelsky přívětivé GUI, kde můžete zadat minutu, dny a cestu skriptu pro generování crontab.

Vezměme si příklad v reálném čase, kdy musím spouštět /home/processMonitor.sh každých 5 minut od pondělí do pátku.

Takže jsem dostal níže uvedenou syntaxi Cron, kterou mohu vložit do svého crontab spuštěním
crontab –e

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

# 2. Easycron Easycron

je užitečný webový plánovač úloh cronu. Úlohu cron můžeme vytvořit zadáním URL, které se má volat, můžeme nastavit čas, kdy se má provést. Můžeme také zadat cron výraz nebo jej přidat ručně z popisného formuláře. Důležité je, že můžeme volitelně použít základní HTTP autentizaci pro malou vrstvu zabezpečení.

Nejen to, ale Easycron lze také použít k dosažení jiných účelů, jako je standardní výraz Cron, protokoly provádění úlohy Cron, upozornění e-mailem, samostatné protokoly selhání atd.

# 3. Generátor Crontab Generátor Crontab

je dalším užitečným nástrojem pro generování crontab a pomocí tohoto nástroje můžete také přidat, pokud chcete uložit výstup cron do souboru nebo jej odeslat e-mailem.

# 4. Crontab Guru Crontab Guru

je jednoduchý online editor výrazů pro plánování cronu. Kromě toho poskytuje užitečný prostředek ke sledování vašeho cronjob. Vše, co musíme udělat, je zkopírovat poskytnutý příkaz a připojit jej na konec definice crontab. V případě, že úloha cron selže nebo se ani nespustí, obdržíte e-mail s upozorněním.

V níže uvedeném příkladu se úloha spustí v 04:05, každý den, každý měsíc a každý týden.

# 5. Tester CRON Tester CRON

nám umožňuje testovat definice času a data cronu. Může nastat situace, kdy budeme muset dekódovat stávající syntaxi cron pro odstraňování problémů nebo jen chceme provést test.

K tomu můžeme použít tento nástroj. Vše, co musíme udělat, je zkopírovat a vložit náš cron výraz do pole definice cron, poté zvolit počet iterací a kliknout na Test, abyste viděli různá data, kdy bude spuštěn.

Pojďme zkontrolovat jeden z našich cronových výrazů 4 3 */2 * *, který by měl běžet v 03:04 (AM) každé dva dny. Pojďme to ověřit pomocí cron testeru.

Závěr Doufám, že výše uvedené vám pomůže lépe porozumět Crontab a nastavení úloh cron. Plánování úloh přes Cron je jedním z mnoha úkolů, které provádí Linux Admin. Pokud se chcete naučit pokročilé dovednosti, podívejte se na totokurs

.