Inicio > gestión > Programando tareas en Linux – comandos sleep, at y cron

Programando tareas en Linux – comandos sleep, at y cron

Linux nos ofrece algunas formas de programar tareas mediante comandos. Existen tres opciones:

  • Esperar un tiempo y  ejecutar un comando con el comando sleep
  • Ejecutar un comando o lanzar un programa a una hora específica con el comando at
  • Ejecutar un comando o lanzar un programa regularmente a determinada hora en forma mensual, semanal o diaria con cron.

Veamos el uso de cada uno de estos comandos.

Comando sleep

Este comando espera la cantidad de segundos pasados como parámetro. Podemos utilizarlo cuando deseemos ejecutar un proceso después de una cantidad de tiempo. Un ejemplo simple (pero sin utilidad) sería listar un directorio dentro de 60 segundos:

(sleep 60; ls /home/usuario ) &

Para cortar la ejecución presionar CTRL + c.

Comando at

At ejecuta un comando o programa a determinada hora determinado día. Su sintaxis es bastante sencilla.

Por ejemplo, si deseamos descargar determinado archivo a las 23:12, ejecutamos:

echo “wget http://www.empresa.com/archivo.txt” | at 23:11

El comando que va entre comillas luego de echo es el que se ejecutará a la hora indicada. Si deseamos hacerlo a las 23:11, pero de mañana, ejecutamos:

echo “wget http://www.empresa.com/archivo.txt” | at 23:11 tomorrow

El comando at soporta diferentes formatos de fecha/hora y también ofrece la posibilidad de leer los comandos a ejecutar de un archivo, para más información: man at

Cron y crontab

Este es más versátil que los anteriores. Cron ejecuta comandos y/o programas a determinados momentos de acuerdo a lo que cada usuario ha configurado en crontab (archivo en donde se guardan las tareas programadas). Es posible ejecutar programas en forma diaria, semana, mensual, etc. ¿Quieres tener un despertador que tenga como alarma tus mp3 favoritos? con cron puedes hacerlo.

Para agregar una tarea o modificar alguna, editamos el archivo crontab con el comando:

crontab -e

Abrirá el editor de textos Nano para modificar el archivo (para salir y guardar los cambios CTRL + X). Las entradas en el archivo siguen el siguiente formato:

Por ejemplo, deseamos ejecutar un script todos los días a las 23:30Hrs

30 23 * * * /home/usuario/mi_script.sh

Cada * significa “cualquiera”, es decir, se ejecutará a las 23:30 de cualquier día, cualquier mes y cualquier día de la semana.

Si deseamos ejecutar un script el día de navidad cada año:

00 00 25 12 * /home/usuario/saludo_navidad.sh

El 25 indica el día del mes y el 12 el mes del año, lo que daría 25 de Diciembre.

Si es que deseamos ejecutar un script todos los martes 13 a la 1am:

00 01 13 * 2 /home/usuario/script-martes-13.sh

El 13 indica el decimotercer día del mes, el * que le sigue indica que es cualquier mes y el 2 siguiente indica que se ejecute sólo los días martes (los días de la semana se numeran empezando con 1 para Lunes y terminando con 7 para domingo), así, si el 13 de enero cae jueves, no se ejecutará el script, pero si el 13 de abril cae martes, lanzará el script

Si es que deseamos tener Amarok como un despertador, empezando a tocar nuestra lista de reproducción de lunes a viernes a las 7am:

00 07 * * 1-5 amarok -p

Esto ejecutará el comando amarok -p (que le indica a Amarok que reproduzca nuestra lista actual) a las 07:00Hrs todos los días del mes, todos los meses y sólo de Lunes a Viernes (por eso el 1-5)

Para más información: man crontab

Cron y Crontab de una forma más amigable.

Algunos dirán: “Pero Linux es muy complicado, siempre usando la consola, en Windows yo hago esto en dos patadas…”. En estos casos, tenemos una amigable interfaz gráfica para Cron, en el caso de KDE, se llama KCron y la interfaz es bastante intuitiva. Para ejecutarlo, basta ir a Menú K / Sistema / KCron

 

Fuente: El Modem

Categorías:gestión Etiquetas:
  1. 17 enero, 2011 a las 6:26 pm

    Perfecto post y sirve de gran ayuda en muchos casos.

    Pero a mi me gustaría ir un poco mas allá y veo que usted puede saberlo.

    A mi me gustaría que ejecutará un script cada vez que se conectara un pendrive en concreto.
    Me refiero a que nada mas conectar mi pen se haga una copia a una carpeta que yo especifique.

    Me daría igual que sea un script o un programa que me lo hiciera o cualquier cosa, me gustaría poder hacerlo, porque trabajo bastante con el pen y con datos bastante importantes por lo cual tener siempre una copia.

    Espero que pueda ayudarme.

    Un saludo

  2. terli
    18 diciembre, 2011 a las 11:40 pm

    Muy bueno el post. Mi viejo me pidio que le avisara a una hora determinada por que tenia que hacer algo y me puse a jugar con esto. Se agradece. Un saludo

  1. 4 enero, 2011 a las 3:57 pm

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: