Programar Tareas

== Generalidad ==
Veremos como podemos configurar nuestro sistema operativo para realizar tareas periódicas de una manera muy cómoda. Tenemos dos mecanismos básicos para programar tareas: 
 -.crontab: nos permite programar tareas que queremos repetir de forma periódica.
 -.at: nos permite realizar una tarea a una hora determinada pero sólo una vez.
== Crontab ==
El comando crontab (cron) nos permite programar tareas y/o ejecutar comandos periódicamente a ciertas horas, ciertos días de la semana, del mes, del año, etc. Con este comando, cada administradorBD puede definir sus propias tareas programadas.
===Sintaxis básica===
 * crontab -l Mostrar las tareas programadas por el usuario.
 * crontab -e Editar el fichero crontab. Con esto editaremos el fichero de configuración de crontab de cada usuario para poder modificar las tareas programadas.
 * crontab -r Eliminar el fichero crontab corriente.
 * crontab -u <usuario> Aplicar una de las opciones anteriores para un usuario determinado. Sólo root puede hacerlo. 
El demonio cron ejecuta las instrucciones contenidas en:
 * el archivo /etc/crontab (tables for cron).
 * los archivos ubicados en el directorio /etc/cron.d
 * los archivos /var/spool/cron/crontabs/<usuario>
===Editando nuestro fichero crontab===
 gilbertoc@gilbertoc:~$ crontab -e 
===Contenido de un fichero crontab===
Es similar a:
 # m h dom mon dow user command
 17 * * * * root cd / && run-parts --report /etc/cron.hourly
 25 6 * * * root cd / && run-parts --report /etc/cron.daily
 47 6 * * 7 root cd / && run-parts --report /etc/cron.weekly
 52 6 1 * * root cd / && run-parts --report /etc/cron.monthly
 
 # Hacer una copia de seguridad del directorio documentos cada día a las 00:00
 0 0 * * * tar -czf docs-`date -I`.tar.gz ~/documentos/ 
 (el símbolo ~ es equivalente a $HOME, y a /home/usuario/)
 
 # Hacer una copia de seguridad de la Base de datos cada día a las 07:30 y 21:30
 30 7 * * 1-5 /var/respaldos/scripts/mantenimiento_postgresql.sh
 30 21 * * 1-5 /var/respaldos/scripts/mantenimiento_postgresql.sh
 
 * m: minuto [0-59].
 * h: hora [0-23].
 * dom: día del mes [1-31].
 * mon: mes [1-12].
 * dow: día de la semana [0-7] (0 ó 7 es Domingo).
 * user: usuario.
 * command: comando.
A la hora de expresar los minutos, horas, días, meses y año, podemos utilizar listas: 3,23,43; rangos de tiempo: 1-5; pasos: 2-6/2 (= 2,4,6); y * (cualquier valor).
=== /etc/crontab contiene instrucciones para que cron ejecute los scripts de los directorios===
 * /etc/cron.hourly
 * /etc/cron.daily
 * /etc/cron.weekly
 * /etc/cron.monthly
Agregando una línea para cada tarea que queramos programar. Podemos hacernos nuestros scripts y hacer que crontab los ejecute para tener tareas programadas más complejas.
En caso de necesitar reiniciar el servicio puede realizarlo:
 gilbertoc@gilbertoc:~$ service crond restart
 O
 gilbertoc@gilbertoc:~$ /etc/init.d/crond restart
== At==
Este comando nos permite ejecutar tareas a una cierta hora solamente una vez. 
 * <hora><dia> Para especificar la fecha por completo.
 El parámetro <hora> es obligatorio. 
 Podemos ingresar valores de la forma 1800,18:00,0600pm, o bien uno de los 3 valores especiales: noon (mediodia), teatime (16:00) o midnight (00:00). 
 El parámetro <dia> es opcional. 
 Podemos especificarlo de las siguientes maneras: 12/23/2005 (notación americana), 23.12.2005 (notación europea). 
 Podemos omitir el año, pero entonces sólo podemos usar la notación europea (por ejemplo: 23.12).
 También podemos especificar el mes abreviado como: Dec 23 o bien como 23 Dec. 
===Especificaciones===
 * now + <intervalo> Donde intervalo es: <n> (minutos|horas|días|semanas|mes). 
===Opciones===
 * -l Para mostrar la lista de tareas que tenemos programadas.
 * -d <num_tarea> Para eliminar la tarea que queramos. Cada tarea tiene asociado un número que podemos ver con la opción anterior.
Ejemplo 1:
 $ at 5:30pm 
o bien
 $ at 17:30 
Una vez que hayamos ejecutado esto nos aparecerá el prompt de at para que introduzcamos nuestros comandos o tareas que queramos que se ejecuten a esa hora:
 at> gmessage "Comienza la salva de datos!!" 
Una vez hayamos terminado de introducir los comandos, presionaremos Control + D para salir de at.
Ejemplo 2:
Programar tareas para dentro de 3 horas: 
 $ at now + 3 hours
Category:Español