Instalace cron úloh na Linuxový server, nainstalujte a povolte službu cron (cronie/cron) a poté vytvořte plány pomocí příkazu crontab -e s pětipolovým formátem: minuta hodina den měsíc den v týdnu, následovaný příkazem. Potvrďte plán pomocí příkazu crontab -l, ujistěte se, že služba běží, a zkontrolujte protokoly spuštění pomocí příkazu journalctl nebo /var/log/cron.
V této příručce se naučíte, jak nainstalovat cron úlohy na linuxový server, porozumět syntaxi crontab, vyhnout se běžným chybám a spolehlivě monitorovat jejich provádění. Ať už automatizujete zálohy, zahřívání mezipaměti nebo vytváření reportů, tyto kroky vám pomohou s jistotou plánovat úlohy v systémech Ubuntu, Debian, CentOS, Rocky, AlmaLinux a Amazon Linux.
Co je to úloha Cron a jak funguje?
Cron úloha je naplánovaný příkaz nebo skript, který se automaticky spouští na linuxovém serveru v pevně stanovených časech, datech nebo intervalech. Démon cron (crond) průběžně čte plány z uživatelských crontabů a systémových adresářů a poté na pozadí s využitím systémového času provádí definované příkazy.
Používejte cron pro opakovanou automatizaci, jako je zálohování, rotace protokolů atd. SSL obnovení, dotazování API a úlohy údržby. Pro jednorázové nebo složité spouštěče mohou být lepší volbou časovače systemd nebo at (popsáno níže).
Předpoklady a rychlý kontrolní seznam
- SSH přístup s uživatelem bez oprávnění root (doporučena oprávnění sudo).
- Balíček managepřístup k R (apt, dnf nebo yum).
- Nainstalovaný textový editor (nano nebo vim).
- Základní znalost příkazového řádku a absolutní cesty ke skriptům.
- Vědět, který uživatel by měl vlastnit úlohu cron (root vs. uživatel aplikace).
Instalace a povolení Cronu na populárních linuxových distribucích
Ve většině distribucí je cron poháněn balíčkem cronie nebo cron. Nainstalujte, spusťte a povolte službu, aby přetrvávala i po restartu.
Ubuntu / Debian
sudo apt update
sudo apt install cron -y
sudo systemctl enable --now cron
sudo systemctl status cronCentOS/RHEL/AlmaLinux/Rocky Linux
sudo dnf install cronie -y # or: sudo yum install cronie -y
sudo systemctl enable --now crond
sudo systemctl status crondAmazon linux
sudo dnf install cronie -y # Amazon Linux 2023
# For Amazon Linux 2:
# sudo yum install cronie -y
sudo systemctl enable --now crond
sudo systemctl status crondOvěření, zda je služba spuštěna
# Ubuntu/Debian
systemctl is-active cron
# RHEL family / Amazon Linux
systemctl is-active crondPokud je služba aktivní, můžete přidat svou první cron úlohu.
Pochopení syntaxe Crontab (pět polí)

Cronové výrazy používají pět časových polí následovaných příkazem ke spuštění. Každé pole podporuje rozsahy, seznamy a kroky.
# ┌──────── minute (0–59)
# │ ┌────── hour (0–23)
# │ │ ┌──── day of month (1–31)
# │ │ │ ┌── month (1–12 or JAN–DEC)
# │ │ │ │ ┌─ day of week (0–7 or SUN–SAT; 0 or 7 = Sunday)
# │ │ │ │ │
# * * * * * <command to run>Běžné operátory:
- * = libovolná hodnota
- , = uvedené hodnoty (např. 1,15)
- – = rozsah (např. 1–5)
- / = krok (např. */5 pro každých 5 jednotek)
Speciální řetězce pro rychlé plánování
- @reboot — spustí se jednou při startu systému
- @ročně nebo @ročně — 0 0 1 1 *
- @měsíčně — 0 0 1 * *
- @týdně — 0 0 * * 0
- @denně — 0 0 * * *
- @hodinově — 0 * * * *
Vytváření, úprava a správa úloh Cron
Uživatelský Crontab vs. systémový Crontab
- Uživatelský crontab: crontab -e ukládá položky do /var/spool/cron/crontabs/ (Debian/Ubuntu) nebo /var/spool/cron/ (RHEL). Sloupec „uživatel“ není vyžadován.
- Systémový crontab: /etc/crontab a soubory v /etc/cron.d/ obsahují další pole, pod kterým může uživatel spustit program.
Krok za krokem: Přidání první úlohy Cron
# Open your user crontab (choose your editor on first run)
crontab -e
# Example: run a backup script every day at 02:30
30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Zobrazit aktuální záznamy:
crontab -lOdstraňte všechny položky pro svého uživatele:
crontab -r # Caution: deletes without prompt on many systemsSpolehlivé spouštění skriptů (vyhněte se problémům s PATH)
- Použijte absolutní cesty: /usr/bin/php, /usr/bin/python3, /bin/bash.
- Spouštět skripty s úplnými cestami: /home/app/run.sh místo ./run.sh.
- Zdrojová prostředí, pokud je to potřeba (virtualenv, nvm, rbenv).
- Přesměrování výstupu a chyb do protokolů pro ladění problémů.
# Good practice example with explicit interpreter and logging
*/5 * * * * /usr/bin/python3 /opt/app/poll.py >> /var/log/app/poll.log 2>&1Nastavení proměnných prostředí v Crontabu
Jednoduché proměnné prostředí můžete definovat v horní části crontabu nebo v souborech /etc/crontab a /etc/cron.d:
MAILTO=admin@example.com
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 * * * * /usr/local/bin/report.shMAILTO odešle výstup příkazu na zadanou e-mailovou adresu (ujistěte se, že je nakonfigurována lokální pošta nebo MTA, jako je Postfix, nebo se přesměrujte na nástroje Sendmail/SMTP).
Systémový Cron: /etc/crontab, cron.d, cron.daily, cron.hourly
Pro úkoly manageAdministrátoři nebo balíčky používají cron soubory na úrovni systému. Ty podporují specifikaci uživatelského účtu pro každou úlohu.
# /etc/crontab syntax includes the <user> field:
# m h dom mon dow user command
*/10 * * * * root /usr/local/bin/healthcheck.sh- /etc/cron.d/ — vkládací soubory úloh ve stejném formátu jako /etc/crontab.
- /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.weekly/, /etc/cron.monthly/ — sem umístěte spustitelné skripty; ty se spouštějí v časech definovaných distribucí.
Protokolování, monitorování a řešení problémů s cronem
Kde jsou cronové protokoly?
- Ubuntu/Debian: události cron obvykle v /var/log/syslog a podrobnosti o spuštění pomocí journalctl -u cron.
- RHEL/CentOS/AlmaLinux/Rocky/Amazon Linux: /var/log/cron a journalctl -u crond.
# Ubuntu/Debian
sudo journalctl -u cron --since "today"
sudo grep CRON /var/log/syslog
# RHEL family / Amazon Linux
sudo journalctl -u crond --since "today"
sudo tail -f /var/log/cronOtestujte si svou cronovou úlohu
- Spusťte příkaz ručně, abyste se ujistili, že funguje mimo cron.
- Použijte stejného uživatele, pod kterým se spustí cron úloha (su – ).
- Dočasně změňte plán tak, aby se spouštěl každou minutu (*/1) z testovacích důvodů.
- Zapsat do protokolu s časovým razítkem pro potvrzení provedení.
*/1 * * * * echo "$(date) cron fired" >> /tmp/cron-test.logČasté chyby v cronu (a jejich opravy)
- Relativní cesty – pro binární soubory a skripty použijte absolutní cesty.
- Chybějící oprávnění – ujistěte se, že skripty jsou spustitelné (chmod +x) a čitelné pro uživatele cron.
- Rozdíly v prostředí – nastavte CESTA nebo vyhledejte zdroj požadovaných souborů profilu.
- Interaktivní příkazy – vyhněte se všemu, co vyžaduje TTY nebo vstup od uživatele.
- Skript používá jiný shell — nastavte SHELL=/bin/bash nebo přidejte do skriptů shebang (#!/bin/bash).
- Zmatek v časových pásmech – cron používá systémový čas; ověřte to pomocí timedatectl a zdokumentujte UTC oproti místnímu času.
Nejlepší bezpečnostní postupy pro úlohy Cron
- Nejmenší oprávnění: spouštět úlohy jako vyhrazený uživatel aplikace, nikoli jako root, pokud to není nutné.
- Ověřujte vstupy: nikdy nepoužívejte curl | bash pro nedůvěryhodné zdroje; provádějte kontrolní součet skriptů.
- Omezit uživatele: manage /etc/cron.allow a /etc/cron.deny pro kontrolu, kdo může vytvářet cron úlohy.
- Protokolování a upozornění: centralizace protokolů a nastavení upozornění MAILTO nebo externích upozornění pro selhání.
- Chraňte tajné informace: používejte soubory prostředí s omezenými oprávněními; vyhněte se pevnému kódování přihlašovacích údajů ve skriptech.
Časovače Cron vs. systemd: Který byste měli použít?
Cron je jednoduchý a osvědčený v praxi. Časovače systemd nabízejí bohatší funkce, jako je řazení závislostí, náhodná zpoždění, zachycení zmeškaných běhů a užší integrace služeb. Pokud potřebujete pokročilou orchestraci nebo protokoly pro jednotlivé jednotky, zvažte časovače systemd; pro jednoduché intervaly a přenositelnost mezi distribucemi je cron často dostačující.
Příklad: Ekvivalentní časovač systemd
# /etc/systemd/system/report.service
[Unit]
Description=Generate hourly report
[Service]
Type=oneshot
ExecStart=/usr/local/bin/report.sh
# /etc/systemd/system/report.timer
[Unit]
Description=Run report every hour
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
# Enable and start
sudo systemctl enable --now report.timer
sudo systemctl list-timers --allPokročilé plánování: Anacron a časová pásma
Servery, které neběží 24 hodin denně, 7 dní v týdnu, mohou promeškat události cron. Anacron to řeší spuštěním „doháněcích“ úloh s denní, týdenní a měsíční frekvencí po spuštění. Mnoho distribucí obsahuje anacron standardně a integruje ho s adresáři /etc/cron.*.
Časová pásma: Cron používá místní čas serveru. Pro globálně distribuované týmy standardizujte UTC, dokumentujte rozvrhy v UTC nebo explicitně nastavte TZ v crontabu (podporováno na mnoha systémech).
# Set timezone for a single job (check distro support)
TZ=UTC
0 3 * * * /usr/local/bin/cleanup.shPříklady Cron úloh z reálného světa
- Obnovení certifikátů Let's Encrypt (pokud se nepoužívá časovač systemd)
15 2 * * * /usr/bin/certbot renew --quiet >> /var/log/letsencrypt/cron.log 2>&1- Spusťte náhradu wp-cron ve WordPressu přes WP-CLI
*/10 * * * * /usr/bin/php /var/www/html/wp-cron.php >/dev/null 2>&1
# Or with WP-CLI:
*/10 * * * * /usr/bin/wp cron event run --due-now --path=/var/www/html >/dev/null 2>&1- Záloha databáze s časovým razítkem názvu souboru
0 1 * * * /usr/bin/mysqldump -u backup -p'secret' db \
| gzip > /backups/db-$(date +\%F).sql.gz 2>&1- Plánovač Laravelu (běží každou minutu, framework rozhoduje o úlohách)
* * * * * cd /var/www/app && /usr/bin/php artisan schedule:run >> /var/log/laravel-schedule.log 2>&1- Kontrola stavu systému s upozorněním
*/5 * * * * /usr/local/bin/healthcheck.sh || echo "Healthcheck failed at $(date)" | mail -s "Server Alert" ops@example.comČasto kladené otázky: Instalace úloh Cron na Linuxový server
Jak nainstaluji cron na Ubuntu nebo Debian?
Spusťte příkaz sudo apt update && sudo apt install cron -y a poté povolte službu pomocí sudo systemctl enable –now cron. Ověřte to pomocí systemctl status cron a naplánujte úlohy pomocí crontab -e.
Jaký je rozdíl mezi crontab -e a /etc/crontab?
crontab -e upraví crontab pro každého uživatele bez sloupce uživatele. Soubor /etc/crontab (a soubory v /etc/cron.d) jsou systémové a obsahují pole uživatele, které určuje, který účet spouští jednotlivé příkazy.
Kde se ukládají logy cron?
V Ubuntu/Debianu zaškrtněte políčko journalctl -u cron a /var/log/syslog. V RHEL/CentOS/AlmaLinux/Rocky/Amazon Linux použijte příkaz journalctl -u crond a /var/log/cron. Výstup úlohy můžete také přesměrovat do vlastních souborů protokolu.
Proč se moje cron úloha spouští ručně, ale ne přes cron?
Cron běží v minimálním prostředí. Používejte absolutní cesty pro binární soubory, nastavte PATH v crontabu, ujistěte se, že skripty jsou spustitelné, zadejte správný shell (SHELL=/bin/bash) a zaznamenávejte chyby do protokolů pro diagnostiku.
Můžu spustit cron při startu systému?
Ano. Pro spuštění příkazu po spuštění systému použijte zkratku @reboot. Pro uspořádané závislosti nebo ošetření zmeškaných spuštění zvažte časovač systemd s Persistent=true.
Mám používat časovače cron nebo systemd?
Pro jednoduché a přenositelné plány použijte cron. Časovače systemd zvolte, když potřebujete závislosti, jitter (RandomizedDelaySec), robustní logování nebo zaručené dohánění zbývajících běhů.
Jak omezím, kteří uživatelé mohou používat cron?
Pro explicitní povolení uživatelů použijte /etc/cron.allow nebo pro blokování uživatelů pomocí /etc/cron.deny. Pokud existuje cron.allow, mohou úlohy cron vytvářet pouze uvedení uživatelé.
Key Takeaways
- Nainstalujte a povolte službu cron (cron/cronie) pro vaši distribuci.
- Vytvořte úlohy pomocí crontab -e s použitím pětipolového rozvrhu nebo speciálních řetězců.
- Používejte absolutní cesty, nastavte PATH/SHELL a pro spolehlivost logujte výstupy.
- Monitorování přes journalctl a /var/log/cron nebo /var/log/syslog.
- Pro pokročilé plánování zvažte časovače systemd; pro notebooky nebo offline servery použijte anacron.
S těmito kroky můžete s jistotou nainstalovat cron úlohy na linuxový server, bezpečně automatizovat údržbu a udržet předvídatelný a odolný provoz.