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

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.