Crmgo Blog

Cron

Cron

cron Konfigurační soubor /etc/crontab. Adresář pro konfigurační soubory /var/spool/cron/ Daemon crond volá run-parts ke spuštění skriptů z adresářů /etc/cron.*. Pokud pro run-parts není nastavena žádná z voleb –lsbsysinit ani –regex, musí být názvy tvořeny výhradně písmeny velkého a…

Cron

cron

  • Konfigurační soubor /etc/crontab. Adresář pro konfigurační soubory /var/spool/cron/
  • Daemon crond spouští run-parts pro spuštění skriptů z adresářů /etc/cron.*.
Pokud nejsou pro run-parts nastaveny žádné přepínače –lsbsysinit ani –regex, musí být názvy složeny pouze z písmen (velkých i malých), číslic, podtržítek a pomlček. Tečku run-parts nerozumí.

Daemon cron při každém spuštění kontroluje datum změny souboru /etc/crontab a adresáře /var/spool/cron/. Pokud se změnily, přečte všechny změny a zohlední je při následných voláních. Protože utilita crontab po úpravě souboru úloh změní datum změny pro složku /var/spool/cron/, není po úpravě uživatelského souboru rozvrhu potřeba restartovat proces cron – tyto změny budou zohledněny při příštím spuštění. Z tohoto důvodu by se pro úpravu uživatelských souborů rozvrhu měla používat příkazová řádka crontab -e, nikoliv přímá úprava souborů. Pro soubor /etc/crontab se datum změny kontroluje zvlášť, takže jej lze měnit běžným editorem (k tomu jsou potřeba práva roota).

Výstup generovaný spouštěnými příkazy je ve výchozím nastavení odesílán do poštovní schránky vlastníka souboru rozvrhu (obvykle root a jeho e-mail je uveden v souboru /etc/aliases). Pokud chcete výchozí chování zrušit, použijte proměnnou MAILTO. Prázdná hodnota (MAILTO="") přesměruje zprávy do /dev/null.

Formát souboru crontab také umožňuje místo prvních pěti pozic označujících čas spuštění úlohy použít předdefinované hodnoty:

  • @reboot (spustit při startu operačního systému)
  • @yearly (spustit ročně o půlnoci 1. ledna)
  • @monthly (spustit měsíčně o půlnoci 1. dne)
  • @weekly (spustit o půlnoci každé pondělí)
  • @daily (spustit denně v 0:00)
  • @hourly (spustit na začátku každé hodiny).

Zobrazit soubor crona pro uživatele www-data. Přepínač -e umožní upravovat soubor crona uživatele www-data.

# crontab -u www-data -e # редактировать содержимое файла crontab
# crontab -u www-data -l # отобразить содержимое файла crontab
# 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
# |  |  |  |  |
# *  *  *  *  *  command to be executed
Pokud jsou uvedeny všechny hvězdičky, znamená to spouštění každou minutu.

Příklady:

  • Spustit program každé dva dny v 10:00 a odeslat zprávu na e-mail uvedený v proměnné MAILTO

    MAILTO=noc@example.net
    0 10 */2 * * root /usr/local/repl/restart_repl.sh
  • Spustit skript 1. a 15. dne každého měsíce v 2:05, stejně jako v neděli (Day a WDay fungují v režimu "NEBO")

    5  2  1,15 * Sun /home/script

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.