Crontab
Crontab ( sau cron, cronjob ) este folosit pentru a executa una sau mai multe comenzi la intervale de timp stabilite de către utilizator.
Cele mai uzuale comenzi crontab sunt:
- crontab -e => Modifică fișier-ul cu cron-uri sau crează unul dacă nu există
- crontab -l => Afisează fișierul cu cron-uri
- crontab -r => Șterge fișierul cu cron-uri
O comandă din fișierul cron are următoarea structură: MIN HOUR DOM MON DOW CMD
Unde:
- MIN = minute ( 0 – 59 )
- HOUR = ore ( 0 – 23 )
- DOM ( Day Of Month ) = ziua din lună ( 1 – 31 )
- MON = lună ( 1 – 12 )
- DOW ( Day Of Week ) = ziua din săptămână ( 0 – 6 )
- CMD = orice comandă care se dorește a fi executată
Pentru că anumite intervale de timp sunt folosite des, pentru acestea s-au creat pseudonime care încep cu caracterul @ ( în paranteză este folosită structura de mai sus ):
- @reboot = Se execută la pornirea sistemului
- @hourly ( 0 * * * * ) = Se execută la fiecare oră
- @daily ( 0 0 * * * ) = Se execută odată pe zi
- @montly ( 0 0 1 * * ) = Se execută odată pe lună
- @yearly ( 0 0 1 1 * ) = Se execută odată pe an
Ultimul parametru din structura cron-ului este comanda care dorim să o executăm. Aceasta poate să fi o comandă din sistemul de operare sau un script creat de utilizator cu care dorim să facem anumite operații.
Câteva exemple în folosirea acestor comenzi ( exemplele au rol informativ ):
- Backup în fiecare lună ( script shell ). Se execută pe data de 1 la ora 00:00 a fiecărei luni.
10 0 1 * * /home/root/montly_backup
1@montly /home/root/montly_backup - Verificarea structurii bazei de date ( script shell ). Se execută în fiecare oră de la 12 la 20 ( 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00 19:00, 20:00 )
10 12-20 * * * /home/root/database_check - Postare automată ( script php ). Se execută la fiecare 5 minute.
1*/5 * * * * php /var/www/html/cron.php
Pentru a executa mai multe comenzi la un cron putem folosi && care execută comenzile în ordinea în care apar. Această comandă poate fi utilă atunci când dorim să executăm două sau mai multe comenzi în același timp.
Luăm ca exemplu scriptul php din exemplul de mai sus și punem ca primă comandă să meargă în directorul /var/www/html, să execute scriptul php și să se întoarcă în /root.
1 |
*/5 * * * * cd /var/www/html && php cron.php && cd /root |
Când dorim să executăm comenzi automate trebuie să luăm în calcul și resursele pe care acestea le vor consuma pentru a le pune la un interval cât mai optim.