GNU/Linux >> Znalost Linux >  >> Linux

Odstraňování problémů s úlohami Cron

Cron je služba pro servery Linux, která automaticky spouští naplánované příkazy. Úloha cron může být série příkazů shellu, skriptů nebo jiných programů. Úlohy nebo úlohy Cron mohou provádět různé funkce a po spuštění mohou odeslat e-mailovou zprávu, která vás informuje o jejím dokončení nebo chybách. Pokud se zobrazí chyba, existuje mnoho způsobů, jak odstraňovat problémy s úlohou cron. Použijte tento článek pro pomoc při odstraňování problémů nebo výukový program o základech úloh cron. Pokud se chcete dozvědět více o vytváření úlohy cron, podívejte se na naše výukové programy znalostní báze na toto téma.

Kontrola konfigurací pomocí Crontab

Z příkazového řádku můžete zkontrolovat naplánované úlohy cronu uvedením crontab pro uživatele. Tento příkaz odešle obsah uživatelského crontab do terminálu.

Jako uživatel můžete spustit:
crontab -l

Jako root můžete zobrazit crontab libovolného uživatele zadáním uživatelského jména.
crontab -l -u username

Některé podrobné informace o tom, jak formátovat úlohy cron, naleznete v /etc/crontab soubor. Níže je uveden příklad v tomto souboru. Každou hvězdičku lze nahradit číslem nebo odpovídajícím polem. Nebo můžete nechat hvězdičku na místě, aby představovala všechna možná čísla pro danou pozici. Pokud například ponecháte všechny hvězdičky, znamená to, že úloha cron se bude spouštět každou minutu, po celou dobu.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

Změna e-mailové adresy cronu

Po spuštění cron odešle upozornění na e-mailovou adresu nastavenou na řádku MAILTO crontab.

MAILTO="[email protected]"

Chcete-li upravit crontab, můžete jako uživatel spustit následující příkazy:

crontab -e

Nebo pokud jste přihlášeni jako root, můžete zadat uživatelské jméno pro kteréhokoli z vašich uživatelů a zobrazit naplánovanou úlohu, kterou vytvořili.

crontab -e -u username Ty otevírají crontab uživatele ve výchozím editoru. Typicky vim nebo nano příkaz otevře soubor. Uvědomte si, že je to podobné jako při otevírání jakéhokoli jiného textového souboru, který před zavřením uložíte.

Řádek MAILTO označuje, kam má být odeslán stav provádění cronu. Odesílací adresa bude obvykle uživatelské jméno tvůrce úlohy cron spolu s názvem hostitele serveru. Takže adresa odesílatele e-mailu by se řídila touto syntaxí, [email protected]. Pokud e-mail nevidíte hned, může být dobré zkontrolovat schránku se spamem.

Umlčené crony

Někdy jsou úlohy cron nakonfigurovány tak, aby buď neprodukovaly žádný výstup, nebo měly výstup ztišený, i když jsou nastaveny s adresou MAILTO. Pokud vidíte úlohu cron uvedenou na konci s některou z následujících možností, je to známka toho, že výstup cronu byl ztišen. Ty odesílají jakýkoli výstup na nulové zařízení (černá díra na linuxovém serveru). V případech, jako je tento, budete muset odstranit řádek ze skriptu úlohy cron, abyste mohli vygenerovat výstup.

&> /dev/null

2>&1 /dev/null Některé úlohy cronu jsou zcela zakázány. Ty budou mít před příkazem znak „#“, takže při spuštění budou řádky ignorovány. Odstraňte „#“, abyste znovu aktivovali úlohu cron.

Ověření služby Crond

Jakmile potvrdíte správná nastavení, je čas ověřit, zda je cron systém povolen a spuštěn. Každý ze tří následujících příkazů lze použít k ověření, zda je spuštěn crond (služba cron).

/etc/init.d/crond status

service crond status

systemctl status crond

Pokud po spuštění některého z výše uvedených příkazů zjistíte, že služba crond neběží, můžete ji spustit jedním z následujících.

/etc/init.d/crond start

service crond start

systemctl start crond

/var/log/cron

Jakmile víte, že cron je povolen, není umlčen a crond běží, je čas zkontrolovat protokol cron, který se nachází v cestě /var/log/cron .

cat /var/log/cron

Příklad výstupu:

Oct 2 23:45:01 host CROND[3957]: (root) CMD (/usr/local/lp/apps/kernelupdate/lp-kernelupdate.pl > /dev/null 2>&1)
Oct 2 23:50:01 host CROND[4143]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 2 23:50:01 host CROND[4144]: (root) CMD (/usr/local/maldetect/maldet --mkpubpaths >> /dev/null 2>&1)
V protokolu uvidíte, zda, kdy a jaký uživatel spustil cron. Pokud je spuštěn, uvidíte datum a čas provedení následovaný závorkami jednotlivých čísel cronu. Toto časové razítko nepotvrzuje, že skript běžel normálně nebo vůbec, pouze označuje, kdy cron systém naposledy spustil úlohu. Kromě toho možná budete muset prozkoumat samotný skript cron nebo konfigurace na úrovni aplikace a jejich příslušné protokoly, abyste se ujistili, že se kód spouští správně.

Další služby Cron

Tento článek je pouze přehledem hlavní služby crond, protože existuje mnoho dalších služeb úloh cron. Systém anacron je běžně používaná cron služba, která konfiguruje denní nebo hodinové úlohy a lze ji dokonce nastavit tak, aby se spouštěla ​​při restartu. Protokoly pro tyto druhy úloh jsou v /var/log/cron , a nejsou prováděny crond.

Jiné naplánované úlohy, ačkoli se také označují jako úlohy cron, se ze systému crond nespouštějí. Tyto úlohy cron se často konfigurují v kódu nebo konfiguraci webu. Chcete-li zjistit, zda se spustí, budete muset prozkoumat další konfigurace a protokoly, se kterými skript cron komunikuje.

Stejně jako u všech služeb cron lze automatizované úlohy manipulovat tak, aby prováděly mnoho denních úkolů, takže to nemusíte dělat vy. Úlohy cronu se mohou občas zvrtnout, i když je neměníte nebo roky, ale vědět, kde hledat, je polovina úspěchu při odstraňování problémů cronu.


Linux
  1. Cron Jobs / Automatizované úlohy

  2. Cluster Cron Jobs

  3. Jak naplánovat úlohy Cron pomocí Crontab

  1. Použití at pro jednorázové úlohy cron v Linuxu

  2. RCRON – Nastavení vysoké dostupnosti úloh cron

  3. Jak cron interně plánuje úlohy?

  1. Jak odstranit úlohy cron

  2. Přidejte úlohy cron v CWP

  3. Používáte úlohy CRON k návštěvě adresy URL?