.

Breaking News
recent

-

Tareas programadas en Linux


#***********************************************************************************************************************
# _B i e n v e n i d o s__a__m i__p o s t_
#***********************************************************************************************************************


Muchas veces uno tiene que hacer backups, mantener sincronizados dos o más directorios (carpetas)
recibir mensajes popup de la propia máquina, etc, y no hace falta decir que si se hace de forma
automática nos ahorramos varios minutos, olvidos, dolores de cabeza, etc, en Linux hay varias
formas de tener tareas programadas/automáticas.


Forma 1 - Editando el archivo crontab


El archivo crontab situado dentro de la carpeta /etc controla las tareas automáticas de todo el
sistema, para el resto de los usuarios habrá que buscar en /var/spool/cron/crontabs, donde el
archivo tiene el mismo nombre que el usuario, por ej.: /var/spool/cron/crontabs/abel, pero en
general no está orientado a editarse en forma directa.
El archivo crontab mostrado en la imagen es el mismo que se puede encontrar en casi cualquier
distro (salvo las últimas 3 líneas que le agregué), aunque a simple vista se ve algo intimidante
su edición es más fácil de lo que aparenta, ya que:
* va una tarea por línea
* cada linea tiene campos que se separan con uno o más espacios (excepto el último que es la tarea
a realizar)
los campos son los siguientes:

Campo : Rango/valor permitido
minuto : 0 a 59
hora : 0 a 23
dia del mes : 1 a 31
mes : 1 a 12 (o por nombre en inglés)
dia de la semana : 0 a 7, donde 0 y 7 es domingo (o por nombre en inglés)
tarea : comando o script tal como lo ejecutaría desde la consola


se pueden agregar valores adicionales a cada campo separándolos por comas y sin espacios
por ej si quiero ejecutar un backup a las 3:05 de la mañana y a las 13:05 todos los días
como usuario root:
5 3,13 * * * root backup.sh
Ahora si quiero hacer este backup de lunes a viernes justo al mediodía:
0 12 * * 1-5 root backup.sh
aquí hay algo nuevo: el 1-5, aquí se especificó un rango de valores, ya que es mas corto que
poner 1,2,3,4,5
También puedo querer hacerlo cada 2 horas:
*/2 0 * * * root backup.sh
acá hay otra cosa nueva: */2, significa justamente "a cualquier hora cada dos horas", el
demonio cron tomará como referencia el momento en que se leyó el cambio (el cron lee el archivo
de configuración una vez por minuto en busca de cambios)

TIP: luego de escribir la tarea se debería agregar el parámetro > /dev/null 2>&1 más adelante
explicaré el motivo

Esto fue lo básico para jugar con la programación de tareas, si sos insaciable, en las páginas del
manual (escribiendo man 5 crontab desde la consola) vas a tener bastante más...


Forma 2 - Con el comando at
Lejos de detallar todas las opciones de éste comando, éste sirve para tareas que se ejecutan una sola vez
o de una forma repetitiva no periódica, sus formas de uso pueden ser
at HH:MM -f script
o bién
at HH:MM
at> comando uno
at> comando dos

Donde HH:MM puede ser 15:30, 12:00, etc y cuando terminamos se presiona CTRL+D
para saber si hay algo por ejecutarse sólo hay que escribir atq


Forma 3 - Con gnome-schedule


Sin dudas puede ser la opción recomendable, ya que combina cron y at de forma gráfica (en caso de estar con el
entorno KDE se puede usar kcron), su uso es simple (y entendiendo el crontab se hace muy simple)




Detalles básicos:
* Descripción: Nombre de la tarea
* Comando: el script o programa a ejecutar (con sus parámetros si son necesarios)
* Lista:
- Comportamiento predeterminado: para comandos de consola, muestra su salida
- Suprimir salida: para comandos de consola, manda su salida a /dev/null
- Aplicación X: programa gráfico, muestra su salida en la consola
- Aplicación X: suprimir salida: programa gráfico, manda su salida a /dev/null
Es conveniente elejir la opción "suprimir salida" ya sea para programas gráficos o de consola, ya que cron
suele ser bastante delicado con ésto y no ejecutará la tarea si ésta manda sus mensajes a la salida de error
estandar


gnome-schedule también permite una edición avanzada de la tabla crontab ajustando cada detalle (por lo general
no es necesario).
Esto fue todo por hoy, espero que les sea útil.




#***********************************************************************************************************************
# _Fin__del__post_
#***********************************************************************************************************************

No hay comentarios:

Publicar un comentario

-

Con la tecnología de Blogger.