2009-08-30

Programación de Tareas

Es fundamental aprender a programar labores en nuestros sistemas y servidores, esto nos permite tener control de los procesos manejar los tiempos de ejecución de procesos que necesitaos realizar periodicamente y sobre todas las cosas autómatizar lo que necesites.

Existe en Linux dos formas de mandar a ejecutar comandos en una fecha y hora indicada o que sea periodico, acá explicare los dos y después las ventajas de unos sobre el otro, los comandos son at y cron, y los trabajaremos en ese orden.

Comando at

Este comando nos permite indicarle una fecha y hora exacta en la que deseamos que se ejecute un comando, un script o un demonio especifico, la estructura es:

root@:~#at [hora][fecha]

La estructura del tiempo puede ser:

hora : HH:MM, HHMM, HH.MM, Hpm, Ham, midnight(00:00), teatime(16:00),noon(12:00)
fecha : MM-DD-AA, DD.MM.AA, MM/DD/AA, MMDDAA, tomorrow(mañana) (el mes debe ser las iniciales en ingles)

Si no se especifica la hora se toma la actual y si no se coloca la fecha se toma el día presente.

Una vez digitas el comado el te cambia el promt colocandote esto at> en este promt colocaras los comandos, script y demás que desees que se ejecute, para grabar le debes teclar Ctrl+D y listo, un ejemplo gráfico sería así:

root@localhost:~# at 21:08 Aug-29-10
at> /etc/init.d/httpd restart
at> /usr/sbin/datos.sh
at> apt-get autoremove
at>

Acuerdate para salir es teclear Ctrl+D.

Este comando te permite también administrarlo, revisarlo o eliminar entradas, con los siguientes comandos

Revisar cuales están por ejecutarse

root@:~# atq
1 Wed Sep 9 23:50:00 2009 a samuel


Para eliminar un programa

root@:~# atrm #
donde # es el número del proceso, usando la linea anterior sería el 1.


Para ejecutar un programa antes de su tiempo

root@:~# atd #
donde # es el número del proceso, usando la linea anterior sería el 1.


Comando cron

Este te permite programar la ejecución de comados, script o demonios de forma periodica, lo que permite repeticiones por horas, días o meses según comovlo programes, la forma de editarlo es usando el comado así:

root@:~# crontab -e

Este te habilita un archivo editable como si fuera un vi, que contiene los siguientes campos

Minuto : Contrala el minuto en que se ejecutara el comando, debe ser un valor entre 0 y 59
Hora : Controla la hora en la que se ejecutara el comando, debe ser un valor entre 0 y 23
Día : Controla el día del mes en el que se ejecutara el comando, debe ser un valor de 0 a 31
Mes : Controla el mes del año en que se ejecutara el comando, debe ser un valoer entre 0 y 12
Día de la Semana : Controla el día de la semana en que se ejecutara el comando, con un valor entre 0 y 6 donde 0 es domingo, 1 lunes y demás.
Usuario : Usuario que ejecutara el comado, por defecto toma el que lo programe.
Comando : Comando que se desea ejecutar

Cada uno se pueden usar formatos que nos permiten aumentar las opciones de manejo, unos ejemplos son

*/5 Se ejecute cada 5 minutos, cada 5 horas o cada 5 meses segun donde lo coloques
1,3,5 Se ejecute al los minutos 1 - 3 y 5 o meses 1 -3 y 5 según donde lo coloques
1-4 Se ejecute los 4 primeros dias de la seman o mes según donde lo coloques
* Cualquier minuto, hora, mes, día o día de la semana según donde lo coloques

una vez guardes con wq! ya quedara lista la programación para revisarla debes usar el comando crontab -l y para eliminar todo crontab -r.

Comparación de los Sistemas

  • Si lo que necesitas es algo periodico y repetitivo debes usar cron, si es solo una ejecución a una fecha especifica sinduda usa at.
  • Para usar el cron debes asegurarte de tener permiso de usarlo, esto lo verificas en /etc/cron.allow, para usar at no necesitas tener permisos especiales
  • Para usar cron debes usar rutas absolutas de los comandos, pues aunque lo puedes ejecutar con un usuario no verifica el PATH de cada usuario, el comado at se ejecuta con las características del usuario que lo programa por lo que puedes usar los comandos como los usas normalmente.
  • Debes verificar bien la estructura del archivo cron antes de guardarlo, ya que se puede ejecutar en una hora que no desees, con at el formato de la hora es el de uso común.
  • El comando at no te permite realizar programaciones periodicas.