Konfigurace úloh cron na serveru Linux, rozhodněte se, který uživatel má úlohu spustit, připravte skript s absolutními cestami a poté přidejte plán pomocí crontab -e nebo /etc/crontab. Ověřte plán, zkontrolujte protokoly (syslog nebo /var/log/cron) a otestujte jednoduchým výstupem, abyste se ujistili, že úloha běží podle očekávání.
Tato podrobná příručka vysvětluje, jak konfigurovat úlohy cron na Linuxovém serveru v roce 2026, včetně syntaxe cronu, uživatelských a systémových crontabů, protokolování, řešení problémů a osvědčených postupů zabezpečení. Pokud se učíte, jak konfigurovat cron úlohy na Linuxovém serveru prostředí poprvé, najdete v něm praktické příklady a tipy pro produkční účely.
Co je Cron a proč je důležitý v roce 2026?
Cron je časově založený plánovač, který je součástí většiny linuxových distribucí. Spouští úlohy na pozadí v pevně stanovených časech, datech nebo intervalech – ideální pro zálohování, rotaci protokolů, ohřev mezipaměti, údržbu databáze a reporty. Navzdory nárůstu časovačů systemd zůstává cron nejjednodušším a nejpřenosnějším programem. způsob plánování opakovatelného serveru pracovní místa napříč distribucemi.
Předpoklady a rychlý kontrolní seznam
- Přístup k shellu (SSH) na váš Linuxový server.
- Uživatel bez oprávnění root s příkazem sudo, pokud je to potřeba.
- Základní znalost příkazového řádku.
- Sada editorů (nano/vim) při použití
crontab -e. - Nainstalovaný balíček:
cron/cronieslužba spuštěná.
# Ubuntu/Debian
sudo apt update && sudo apt install cron
sudo systemctl enable --now cron
# CentOS/RHEL/AlmaLinux/Rocky
sudo dnf install cronie
sudo systemctl enable --now crondJak Cron funguje v Linuxu
Uživatelský crontab vs. systémový cron
- Uživatelský crontab: Každý uživatel má vlastní soubor s rozvrhem, který lze upravovat pomocí
crontab -eÚlohy se spouštějí s oprávněními daného uživatele. - Celosystémový:
/etc/crontaba soubory v/etc/cron.d/lze plánovat úlohy a specifikovat uživatelské pole pro každou úlohu. Užitečné pro globální úlohy nebo úlohy na úrovni služeb.
Cron adresáře a run-parts
/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthlySem přetáhněte spustitelné skripty, které se budou spouštět v předem definovaných časech (managed odrun-parts).- Tyto adresáře jsou ideální pro údržbu systému, ale pro vlastní plány použijte uživatelské crontaby nebo
/etc/cron.d/.
Vysvětlení syntaxe cronu (s příklady)
Časová pole a speciální řetězce
Standardní položky crontabu používají pět časových polí následovaných příkazem. Tato pole jsou minuta, hodina, den v měsíci, měsíc a den v týdnu.
# m h dom mon dow command
5 2 * * * /usr/local/bin/backup.shSpeciální řetězce zjednodušují běžné rozvrhy:
@reboot /usr/local/bin/startup-task.sh
@hourly /usr/local/bin/rotate-cache.sh
@daily /usr/local/bin/report.sh
@weekly /usr/local/bin/cleanup.sh
@monthly /usr/local/bin/archive.shOperátory: hvězdička, čárka, pomlčka, lomítko
- *libovolná hodnota (každou minutu, hodinu atd.).
- ,seznam (např.
1,15,30). - -: rozsah (např.
1-5pro pondělí–pátek, pokud je neděle = 0/7). - /krok (např.
*/10na každých 10 jednotek).
# Every 10 minutes, weekdays 9:00–18:59
*/10 9-18 * * 1-5 /usr/local/bin/poll-metrics.shPodrobný návod: Konfigurace úloh Cron na serveru Linux
Krok 1 – Vyberte si správného uživatele
Spouštějte úlohy s co nejmenšími potřebnými oprávněními. Pokud je to možné, používejte vyhrazeného uživatele služby. Pro úlohy, které skutečně vyžadují zvýšená oprávnění (např. zálohy systému), rezervujte cron s root oprávněními.
Krok 2 – Bezpečně připravte skript
#!/usr/bin/env bash
set -Eeuo pipefail
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Example: write timestamp to a log
echo "$(date -Is) - Job ran" >> /var/log/myjob.log- Pro binární soubory a soubory používejte absolutní cesty.
- Nastavte známou
PATHuvnitř skriptu (prostředí cronu je minimální). - Udělejte skript spustitelným:
chmod +x.
Krok 3 – Nastavení proměnných prostředí
Proměnné můžete definovat pro každý jednotlivý krok v cronu nebo uvnitř skriptu. Mezi nejběžnější patří: PATH, MAILTO, SHELLa v novějších verzích cronu, CRON_TZ pro časové pásmo pro jednotlivé úlohy.
# Top of your crontab
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
# Optional per-job timezone (supported on many distros)
CRON_TZ=UTCKrok 4 – Přidání úlohy cron
# Edit user crontab
crontab -e
# List current jobs
crontab -lPro úlohy v celém systému upravte /etc/crontab nebo přidat soubor do /etc/cron.d/Nezapomeňte, že systémové položky přidávají před příkaz uživatelské pole.
# /etc/crontab example (note the 'user' field)
# m h dom mon dow user command
5 2 * * * root /usr/local/bin/backup.shKrok 5 – Ověření a testování
# Quick test: run every minute (then remove after verifying)
* * * * * /usr/bin/date >> /tmp/cron_test.txt 2>&1Počkejte několik minut a poté zkontrolujte výstup. Pokud funguje, nahraďte jej skutečným rozvrhem. Vždy zaznamenávejte výstup a chyby: append >> /var/log/myjob.log 2>&1.
Příklady cronu z reálného světa, které můžete kopírovat
# 1) Nightly database backup at 02:15 UTC
15 2 * * * /usr/local/bin/db-backup.sh >> /var/log/db-backup.log 2>&1
# 2) Run a script every 5 minutes
*/5 * * * * /usr/local/bin/refresh-cache.sh >> /var/log/cache.log 2>&1
# 3) Weekday job at 09:00 and 13:00
0 9,13 * * 1-5 /usr/local/bin/report.sh
# 4) At reboot (e.g., start a worker)
@reboot /usr/local/bin/start-worker.sh
# 5) Monthly cleanup on the first at 00:30
30 0 1 * * /usr/local/bin/cleanup.shŘešení problémů: Cron neběží? Řešení
- Potvrzení stavu služby:
- Zkontrolujte protokoly:
- Používejte absolutní cesty. Cesta v Cronu je omezená; příkazy, které fungují ve vašem shellu, mohou v cronu selhat.
- Oprávnění: zajistěte, aby byl skript spustitelný a čitelný; adresáře musí umožňovat procházení.
- Prostředí: exportujte požadované proměnné ve skriptu nebo crontabu.
- Rozdíly v skořápkách: sada
SHELL=/bin/bashpokud používáte syntaxi specifickou pro Bash. - Povolit/zakázat soubory:
/etc/cron.allowor/etc/cron.denymůže omezit uživatele. - Čas a časové pásmo: ověřte systémový čas (
timedatectl) a jakékoliCRON_TZpoužívání.
Zabezpečení a osvědčené postupy pro produkční prostředí
- Nejmenší oprávnění: spouštět jako vyhrazený uživatel, nikoli root, pokud to není nutné.
- Správa verzí: uchovávejte skripty v Gitu; nasazujte je přes CI/CD, abyste se vyhnuli ručnímu posunu.
- Protokolování a rotace: protokolovat veškerý výstup; konfigurace logrotate pro velké protokoly.
- Ověření vstupu: nedůvěřovat vstupu prostředí; očistit proměnné.
- Používejte úplné cesty: binární soubory a soubory by měly být absolutní.
- Zamykání: zabránění překrývání pomocí flocku:
- Monitorování: upozornění na selhání pošty, Slacku nebo monitorovacího zásobníku.
Časovače Cron, Anacron a systemd: Který použít?
- Cron: nejlepší pro servery, které jsou neustále zapnuté a musí spouštět úlohy v přesný čas.
- Anacron: zajišťuje spouštění pravidelných úloh, i když byl počítač v plánovaném čase vypnutý (např. notebooky, vývojářské virtuální počítače).
- Časovače systemd: moderní alternativa s výkonnými závislostmi a syntaxí kalendáře; skvělé pro služby managed od systemd.
Pro většinu automatizace serverů je cron stále dostačující. Pokud potřebujete závislost manageV případě problémů, náhodných zpoždění nebo úzké integrace s jednotkami Systemd zvažte převod kritických úloh cron na časovače.
Cron na spravovaném hostingu a webech WordPress
Sdíleno hosting nebo cPanel, můžete přidat cron úlohy prostřednictvím uživatelského rozhraní ovládacího panelu. Pro WordPress nahrazení pseudo-cron (wp-cron.php) se skutečným cronem zlepšuje spolehlivost a výkon, zejména na rušných webech.
# Disable WP pseudo-cron in wp-config.php
define('DISABLE_WP_CRON', true);
# Real cron every 5 minutes
*/5 * * * * /usr/bin/php /var/www/html/wp-cron.php >> /var/log/wp-cron.log 2>&1Pokud hostujete na YouStableJe managed VPS nebo cloudové servery, náš tým dokáže předkonfigurovat cron, logování a monitorování připravené k produkci, takže vaše zálohy, fronty a úlohy WordPressu běží předvídatelně s minimálními režijními náklady.
Monitorování, protokolování a upozorňování
- Upozornění na e-mail: nastavení
MAILTO=admin@example.comdostávat výstupy z práce e-mailem. - Strukturované protokoly: ukládají se do souborů a pro centralizovanou analýzu se ukládají pomocí rsyslog nebo žurnálu.
- Ukončovací kódy: zabalení skriptů tak, aby při selhání vygenerovaly nenulové hodnoty a upozornění přes Slack/Webhooky.
- Dashboardy stavu: sledují metriky času posledního spuštění, trvání a úspěšnosti.
# Example wrapper with exit-status logging
/usr/local/bin/task.sh >> /var/log/task.log 2>&1
status=$?
if [ $status -ne 0 ]; then
echo "$(date -Is) - task failed with $status" | mail -s "Cron Failure" admin@example.com
fiČasté chyby, kterým je třeba se vyhnout
- Použití relativních cest nebo předpoklad PATH vašeho interaktivního shellu.
- Zapomínání na escapování znaků procent (%), které cron považuje za nové řádky – v případě potřeby uveďte příkazy v uvozovkách nebo escapujte.
- Úprava nesprávného crontabu (root vs. uživatel).
- Přeskakování protokolů, což ztěžuje ladění.
- Překrývání úloh a poškození dat – použití
flocknebo PID soubory.
Závěr
Konfigurace cron úlohy na Linuxovém serveru Záleží na výběru správného uživatele, používání jasných plánů, psaní robustních skriptů a sledování protokolů. Postupujte podle výše uvedených kroků a příkladů a naplánujte spolehlivé a bezpečné úlohy, které přežijí restartování a aktualizace. Pro bezproblémové nastavení a monitorování... YouStable umět manage cron pro vaše produkční úlohy.
Často kladené otázky: Jak konfigurovat úlohy Cron na Linuxovém serveru
Jak naplánuji úlohu cron v Linuxu?
Běh crontab -e, přidejte řádek s pěti časovými poli a příkazem a poté uložte. Příklad: 0 3 * * * /usr/local/bin/backup.sh běží denně v 03:00. Použijte absolutní cesty, nastavte PATH nebo jej definujte v horní části crontabu a ověřte pomocí crontab -l.
Kde se ukládají logy cron?
V Ubuntu/Debianu se zprávy cron zobrazují v /var/log/syslog a journalctl -u cronV systémech RHEL/CentOS/Alma/Rocky zkontrolujte /var/log/cron or journalctl -u crondPro snazší řešení problémů vždy zaznamenávejte výstup úlohy do souboru.
Jaká je správná syntaxe cronu pro každých 5 minut?
Použijte hodnotu kroku v poli minut: */5 * * * *. Příklad: */5 * * * * /usr/local/bin/task.sh >> /var/log/task.log 2>&1Toto běží v minutě 0, 5, 10, 15 atd. každou hodinu.
Jak mohu spustit cron úlohu při restartu?
Přidat komentář @reboot záznam do vašeho crontabu: @reboot /usr/local/bin/startup.shZajistěte, aby skript zpracovával idempotenci a zaznamenával své akce. To je užitečné pro pracovníky fronty, monitorovací agenty nebo ohřívače mezipaměti, které by měly spouštět server.
Jaký je rozdíl mezi uživatelským crontabem a /etc/crontab?
Uživatelské crontaby izolují plány pro každého uživatele a neobsahují uživatelské pole. /etc/crontab je systémový a přidává sloupec uživatele pro spouštění příkazů jako konkrétní uživatelé. Pro úlohy specifické pro aplikaci preferujte crontaby uživatelů; pro systémové úlohy použijte /etc/crontab or /etc/cron.d/.