Tareas programadas en Linux
Con el comando
crontab -l
Obtenemos un listado de tareas programadas para el usuario actual.
Con el comando
crontab -e
Editamos las tareas programadas del usuario actual.
Y su sintaxis general es esta:
crontab [-u user] [-l | -r | -e] [-i] [-s]
El fichero tiene texto de auto ayuda:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use ‘*’ in these fields (for ‘any’).#
# Notice that tasks will be started based on the cron’s system
# daemon’s notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
Si nos fijamos en lo interesante:
minute (m) hour (h) day of month (dom) month (mon) day of week (dow)
use ‘*’ for ‘any’
Si queremos programar una tarea ‘tarea_diaria‘ todos los días a las 2 de la madrugada, pondríamos lo siguiente:
0 2 * * * tarea_diaria
Para enviar un correo electrónico con el resultado de la ejecución de una tarea programada, haremos lo siguiente:
0 2 * * * tarea_diaria | mail -s "resultado de tarea_diaria" tracking@joseblanco.pro
En ambos ejemplos, tarea_diaria, suele ser un comando de Linux, con sus opciones o parámetros, pero es más habitual que sea un script, por ejemplo el de copias de seguridad.
Si convertimos el enunciado del ejemplo en realizar una copia diaria del directorio /etc, a las 2 y media de la mañana y enviar un email con los resultados a una cuenta de correo, podríamos hacer:
30 13 * * * /root/copias.sh | mail -s "Backup report" tracking@joseblanco.pro
Y el script de copias podría ser este:
tar -cz --absolute-names --totals -f /copias/etc.tar.gz /etc
Si quieres profundizar en ello, entre las páginas web que hay por ahí, te recomiendo esta:
https://crontab.guru/
Hasta otra