Automatització de tasques
Introducció
Moltes de les tasques d'administració d'un servidor s'han de portar a terme de manera periòdica.
Per exemple:
- fer còpies de seguretat dels teus arxius un cop al dia
- actualitzar el sistema
- canviar el fons de pantalla cada 30 minuts.
És necessari que el sistema operatiu ens proporcioni alguna eina per a poder configurar totes aquestes tasques de forma automàtica i periòdica.
El dimoni [daemon] anomenat crond és el que s'encarrega de gestionar tot el sistema d'execucions periòdiques.
Servei cron
El Linux té un servei anomenat cron que funciona despertant-se cada minut i mirant un fitxer on hi ha les tasques programades.
Podem saber que el procés s'està executant amb la comanda:
ps aux | grep cron
En el fitxer /etc/crontab
conté la informació de les tasques programades.
Cada usuari té el seu propi fitxer crontab.
Programar tasques periòdiques
La comanda crontab
permet programar tasques periòdiques i especificar el moment d'execució.
Es pot configurar el cron per cada usuari, tot i què normalment només es fa pel root.
Per veure les tasques programades de l'usuari actual.
sudo crontab -l
Per editar el fitxer de tasques de l'usuari actual.
sudo crontab -e
Per editar el fitxer de tasques de l'usuari root.
sudo crontab -u root -e
Per eliminar les taques programades de l'usuari actual.
crontab -r
Editar tasques programades
sudo crontab -e
La primera vegada què es posi en marxa, demanarà amb quin editor es vol modificar la configuració: per defecte està marcada la opció 2 (/bin/nano
)
Els camps què s'han de posar a cada línia són els següents:
< minut > < hora> < diaMes> < mes> < diaSetmana> < usuari> < comanda>
(0-59) (0-23) (1-31) (1-12) (0 o 7=diumenge - 6)
- minut (0-59): en quin minut o minuts s'ha d'executar la comanda.
- hora (0-23): en quina o quines hores s'ha d'executar la comanda.
- dia del mes (1-31): en quin o quins dies del mes s'ha d'executar la comanda.
- mes (1-12): en quin o quins mesos s'ha d'executar la comanda.
- dia de la setmana (0-7): tant el 0 com el 7 representen el diumenge. La comanda només s'executarà si cau en un dels dies especificats.
- usuari: l'usuari que s'utilitzarà per a executar la comanda.
- comanda: comanda o script a executar. Si és un script, convé indicar tota la ruta, per exemple:
/home/usuari/script.sh
Exemples:
Símbol | Significat | Exemple | |
---|---|---|---|
* | Tot el rang. Cada unitat de temps | diaMes * | Cada dia |
num | Per indicar el moment concret | Hora 15 | A les 15:00h |
num-num | Rang de valors consecutius No posar espais | Mes 1-6 | Del Gener al Juny |
num, num, num | Per indicar valors concrets de hores, dies o mesos. No posar espais | diaSetmana 1,3,5 | Cada dilluns, dimecres i divendres |
*/num | Cada determinat temps | Hores */2 | Cada 2 hores |
num-num/num | Hora 8-20/5 | Entre les 8h i les 20h, cada 5 hores |
Exercici
Solució
Amb entorn gràfic
Per automatitzar tasques en mode gràfic, s'utilitza el programa anomenat Tareas programadas (gnome-schedule).
Amb Ubuntu hi accedim des de Aplicacions> Eines del sistema > Tasques programades
Aquest programa permet programar tasques per ser realitzades només una vegada o periòdicament.