Exemple de expresii cron
Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.
0 2 * * * /usr/local/bin/backup.sh
*/5 * * * * /usr/bin/php /var/www/site/cron.php
30 8 * * 1-5 /usr/local/bin/raport.sh
0 6 1 * * /usr/local/bin/facturi.sh
*/5 * * * * wget -q -O - https://www.exemplu.ro/wp-cron.php?doing_wp_cron >/dev/null 2>&1
0 10 * 6-8 6 /usr/local/bin/promo.sh
Cum folosești generatorul de expresii cron
- Alege un model: în fiecare minut, orar, zilnic la miezul nopții, în zilele lucrătoare la 9, duminica, prima zi a lunii sau la fiecare 15 minute.
- Sau scrie direct cele cinci câmpuri: minut, oră, zi din lună, lună și zi din săptămână.
- Citește descrierea în română și verifică următoarele 5 rulări, apoi copiază expresia. Calculul se face în browser; nu se trimite nimic către server.
Câmpurile și caracterele speciale
┌───────── minut (0–59)
│ ┌─────── oră (0–23)
│ │ ┌───── zi din lună (1–31)
│ │ │ ┌─── lună (1–12)
│ │ │ │ ┌─ zi din săptămână (0–7, 0 și 7 = duminică)
│ │ │ │ │
0 9 * * 1-5 comanda
* înseamnă orice valoare, , separă o listă (1,15), - dă un interval (1-5), iar / un pas (*/15 = la fiecare 15 unități). Atenție: dacă restrângi atât ziua din lună, cât și ziua din săptămână, comanda rulează când se potrivește oricare dintre ele. 0 0 1 * 1 rulează pe 1 ale lunii și în fiecare luni.
Adăugarea în crontab
Deschide lista de sarcini cu crontab -e și adaugă câte o linie pentru fiecare. Orele sunt cele ale fusului orar al serverului, care poate fi UTC, nu ora României; verifică-l cu date. Folosește căi complete pentru comenzi, pentru că cron rulează cu un mediu minimal.
crontab -e
30 2 * * * /usr/bin/php /var/www/scripturi/backup.php >> /var/log/backup.log 2>&1
WP-Cron sau cron real
WordPress are propriul WP-Cron, care pornește doar când cineva vizitează site-ul. Pe un site cu puține vizite, sarcinile întârzie; pe unul aglomerat, verificarea se face la fiecare cerere. Soluția: îl dezactivezi și îl chemi dintr-un cron real.
// în wp-config.php
define('DISABLE_WP_CRON', true);
# în crontab, la fiecare 5 minute
*/5 * * * * curl -s https://exemplu.ro/wp-cron.php?doing_wp_cron > /dev/null 2>&1
# sau, cu WP-CLI
*/5 * * * * cd /var/www/site && wp cron event run --due-now > /dev/null 2>&1
Comenzile de bază găsești în Învață Linux și Învață WordPress.
Întrebări frecvente
Pot rula o sarcină la fiecare 30 de secunde?
Nu direct; cel mai mic pas este un minut. Poți pune două linii, a doua cu sleep 30; înaintea comenzii, sau poți folosi un timer systemd.
Unde văd dacă a rulat?
Redirecționează ieșirea comenzii într-un fișier de log, ca în exemplul de mai sus. Pe multe distribuții, rulările apar și în jurnalul sistemului.