Tareas programadas en GNU/Linux, BSD

By GNU_and_Tux.svg: Tux.svg: Larry Ewing, Simon Budig, Anja GerwinskiHeckert_GNU_white.svg: Aurelio A. Heckert Gnulinux.png: Aurelio A. Heckert , lewing@isc.tamu.edu (using The GIMP), Dudufderivative work: Wondigoma (talk) - GNU_and_Tux.svgGnulinux.png, FAL, https://commons.wikimedia.org/w/index.php?curid=8477733 Alarm Clock Vector.svg from Wikimedia Commons by Videoplasty.com, CC-BY-SA 4.0

Mouse over para ver créditos

cron es el servicio que permite programar la ejecución de comandos y tareas en GNU/LINUX, BSD y otras variantes UNIX. cron se ejecuta cada minuto y detecta si hay un nuevo comando o tarea que deba ejecutarse, para ello lee los ficheros /etc/crontab, /etc/cron.d/* y /var/spool/cron/crontabs/*

crontab es el programa que mantiene (instala, desinstala o lista las tareas programadas) los ficheros de las tareas programadas, cada usuario tiene su propio fichero crontab en /var/spool/cron/crontabs/usuario el cual no debe editarse directamente. Si el fichero /etc/cron.allow existe su usuario debe aparecer en el mismo para poder programar tareas, si no existe y existe /etc/cron.deny su usuario no debe aparecer en este último; si ninguno de los 2 existen entonces depende de la configuración por defecto del SO.

crontab tambien es el fichero que contiene instrucciones para ejecutar las tareas programadas. Una línea en el fichero crontab puede establecer una variable de entorno (nombre-var = valor) o programar la ejecución de un comando; las líneas en blanco y las que comienzan con # (comentarios) son ignoradas. El formato para programar una tarea es el siguiente:

#(0-59) (0-23)    (1-31)    (1-12)       (0 - 7)
  min     hr    día-del-mes  mes     día-de-la-semana	       comando

Notas:

  • - Un * = todo los valores posibles
  • - Se puede especificar un rango de valores separados por un guión
  • - Se puede especificar una lista de valores separados por coma
  • - Se puede especificar un paso dentro de un rango de valores
  • - El 0 o 7 = Domingo para día-de-la-semana

Ejemplos

Realizar copias de seguridad a mi home cada 5 min
*/5 0 * * * rsync -avz $HOME servidor:/mnt/respaldo

Leer rsync - 16 ejemplos prácticos para más opciones de sincronización.

Realizar copias de seguridad a mis BD de lunes - viernes a las 10:00 p.m
0 22 * * 1-5 mysqldump -u root -pclave --all-databases > $HOME/bds.sql
Enviar correo de recordación los días 1ero y 15 de cada mes a las 2:15 p.m
15 14 1,15 * * mail -s 'Recordatorio' flosblog@wordpress.com < /dev/null
Realizar copias de seguridad a mis projectos cada 2 horas en el horario de 8:30 a.m - 5:30 p.m de lunes a viernes
30 8-17/2 * * 1-5  rsync -avz $HOME/prt servidor:/mnt/respaldo/prt

Leer rsync - 16 ejemplos prácticos para más opciones de sincronización.

Todo junto
# Usar BASH para ejecutar los comandos
SHELL=/bin/bash

*/5 0 * * * rsync -avz $HOME servidor:/mnt/respaldo

0 22 * * 1-5 mysqldump -u root -pclave --all-databases > $HOME/bds.sql

15 14 1 * * mail -s 'Recordatorio' flosblog@wordpress.com < /dev/null

30 8-17/2 * * 1-5  rsync -avz $HOME/prt servidor:/mnt/respaldo/prt
Para editar el fichero crontab ejecute
crontab -e

Lecturas recomendadas

- man cron
- man 1 crontab


YouTube video

Los tutoriales aquí en LibreByte están disponible bajo una licencia de software libre. Si le gusta mi trabajo considere:
Comprar un Hosting/VPS o Servidor Dedicado en MCKHost

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.