Cron

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
m (pongo en negrita el comando)
 
(No se muestran 3 ediciones intermedias realizadas por 2 usuarios)
Línea 90: Línea 90:
  
 
  0 8 * * * '''DISPLAY=":0"''' thunderbird
 
  0 8 * * * '''DISPLAY=":0"''' thunderbird
 +
 +
 +
 +
== Editores gráficos de crontab ==
 +
 +
Podemos editar gráficamente y de forma muy sencilla el archivo crontab mediante aplicaciones gráficas como:
 +
 +
:* [http://tuxpepino.wordpress.com/2007/05/16/%C2%BFconocias-crontab-y-gnome-schedule/ gnome-schedule] (recomendado): Es el editor gráfico de crontab estéticamente más depurado, además e estar completamente traducido al español. Además, nos "traduce" los comandos a u lenguaje más entendible, por lo que requiere menos "soltura" con la edición de crontab.
 +
 +
:* [http://www.arquired.es/users/aldelgado/proy/gcrontab/ gcrontab]: Editor gráfico de crontab muy funcional, pero estéticamente no tan depurado.
 +
 +
:* [http://docs.kde.org/development/es/kdeadmin/kcron/index.html kcron]: Editor gráfico de crontab que es un componente integrado en el módulo de administración de KDE.
 +
 +
 +
Estas aplicaciones abren automáticamente nuestro archivo ''crontab'' en caso de tener uno ya creado.
 +
 +
 +
{{Nota|Aunque estos editores simplifican mucho el trabajo, no excluyen conocer mínimamente las bases de edición de crontab. Un punto a favor de ellos es que si editamos manualmente nuestro crontab y éste no realiza las tareas que le asignamos (y no sabemos por qué), al abrirlo con uno de estos editores es fácil ver dónde se halla el fallo.}}
  
  
Línea 120: Línea 138:
  
 
: 0 1 * * * DISPLAY=":0" gnome-terminal --command=rtorrent
 
: 0 1 * * * DISPLAY=":0" gnome-terminal --command=rtorrent
 +
 +
 +
 +
 +
== Ver también ==
 +
 +
* [http://tuxpepino.wordpress.com/2007/05/16/%C2%BFconocias-crontab-y-gnome-schedule/ Configurar gráficamente tareas mediante Gnome-schedule] (en español)
  
  
Línea 126: Línea 151:
  
 
* Artículo [http://www.mononeurona.org/pages/display/132 Editando el Crontab] en el espacio [http://www.mononeurona.org Despabilando la Mononeurona]
 
* Artículo [http://www.mononeurona.org/pages/display/132 Editando el Crontab] en el espacio [http://www.mononeurona.org Despabilando la Mononeurona]
 +
 +
[[Categoría:Sistema Linux]]

Última revisión de 10:46 7 oct 2008

Cron es un programa o demonio (daemon) que permite ejecutar otros programas o scripts en un lapso de tiempo y una periodicidad especificada por el usuario. Su comportamiento esta regulado por su archivo de configuración, que se llama crontab. Cada usuario del sistema posee un archivo crontab personalizado y sólo el usuario root puede modificar el archivo crontab de otro usuario. Si se desea agregar un archivo crontab, es necesario entrar ("logearse") primero como ese usuario.


Contenido

[editar] Cómo editar el archivo crontab

Un usuario sólo puede hacer uso de crontab si su nombre aparece en:

/etc/cron.allow

Si este archivo no existe, el usuario puede usar crontab a menos que su nombre aparezca en:

/etc/cron.deny.

La sintaxis del archivo crontab es muy clara y rígida. Hay seis campos por cada linea, y cada campo está separado por un espacio. Los primeros cinco campos específican el momento preciso de ejecución, mientras que el sexto campo es el propio comando o script que se ejecutará. Los primeros cinco campos son:

 #     m     h    dom   mon   dow    /commando/a/ejecutar
 -     -     -     -     -     -
 |     |     |     |     |     |
 |     |     |     |     |     +----- día de la semana (0 - 6) (dom = 0)
 |     |     |     |     +------- mes (1 - 12)
 |     |     |     +--------- día del mes (1 - 31)
 |     |     +----------- hora (0 - 23)
 |     +------------- minuto (0 - 59)
 +---------------- espacio vacío (no poner nada)


Para editar el archivo crontab sólo es necesario abrir una consola de comandos y ejecutar el comando:

crontab -e


Si es la primera vez que lo ejecutamos, veremos un archivo vacío en el editor nano (editor de textos en consola de Gnome en Ubuntu). En este caso, si agregamos la siguiente línea al archivo:

45 19 * * * rm /home/NombreDeUsuario/tmp/*

estaremos indicando a cron que el contenido del directorio /home/NombreDeUsuario/tmp/ será borrado todos los días a las 7:45 PM. Si queremos conservar esta instrucción, tendremos que guardar el archivo pulsando la tecla F3, y salir de nano pulsando la tecla F2. Veremos el mensaje:

crontab:installing new crontab 


que indica que una nueva tarea ha sido agregada a cron. Si ejecutamos el comando:

crontab -l


empleando la opción -l, veremos las tareas estipuladas en crontab. En este caso sólo veríamos la tarea que acabamos de agregar, pero si nuestro crontab ya tenía tareas programadas también aparecerían.


Important.png Es un fallo común el empezar a poner algún dato debajo de "#", por lo que el archivo acaba estando mal codificado y nos aparece el error:
crontab: installing new crontab
"/tmp/crontab.bm5Oqc/crontab":1: bad command
errors in crontab file, can't install.
Do you want to retry the same edit? 

En caso de que esto nos ocurra, podemos pulsar la "y" de "yes" para corregir la estructura de nuestro crontab. Seguramente hayamos puesto un dato temporal de más (un asterisco muy probablemente). Debemos asegurarnos que en cada línea tenemos 5 cifras para determinar la periodicidad y luego el comando (* * * * * comando).


La opción -r elimina el archivo crontab del usuario, o lo que es lo mismo, todas la tareas programadas en nuestro crontab, así que no se usa muy a menudo, y cuando se usa ha de emplearse con mucha precaución.


Clip.png Si queremos usar otro editor de consola que no sea nano (como por ejemplo, vim, es necesario exportar la variable de ambiente EDITOR. Para ello, podemos escribir en consola de comandos y escribir:
export EDITOR="vim"

Si deseamos cambiar de editor de manera permamente, tendremos que agregar esta misma línea al archivo:

$HOME/.bashrc.


Habitualmente, cron envía un e-mail de notificación al usuario propietario de crontab. Esto puede llegar a ser molesto, sobre todo si tenemos un cron que se ejecuta con mucha frecuencia. Para deshabilitar el envio de este e-mail agregaremos lo siguiente al final de cada línea del crontab:

>/dev/null 2>&1


[editar] Ejecutar aplicaciones gráficas con cron

Cron ejecuta comandos (en principio) que no impliquen una salida por entorno gráfico, con lo que en principio, si queremos que nos abra una terminal de gnome o el gestor de correo Mozilla Thunderbird, no podemos editar crontab de la siguiente manera:

0 8 * * * thunderbird

Esta línea en principio abriría el programa cada día a las 8 a.m., pero escrito de esta forma cron no puede interactuar con el entorno gráfico y la orden no se ejecuta. Para solventarlo, debemos añadir el siguiente elemento antes del comando que queramos que se ejecute:

DISPLAY=":0"

de modo que la línea nos quede así:

0 8 * * * DISPLAY=":0" thunderbird


[editar] Editores gráficos de crontab

Podemos editar gráficamente y de forma muy sencilla el archivo crontab mediante aplicaciones gráficas como:

  • gnome-schedule (recomendado): Es el editor gráfico de crontab estéticamente más depurado, además e estar completamente traducido al español. Además, nos "traduce" los comandos a u lenguaje más entendible, por lo que requiere menos "soltura" con la edición de crontab.
  • gcrontab: Editor gráfico de crontab muy funcional, pero estéticamente no tan depurado.
  • kcron: Editor gráfico de crontab que es un componente integrado en el módulo de administración de KDE.


Estas aplicaciones abren automáticamente nuestro archivo crontab en caso de tener uno ya creado.


Clip.png Aunque estos editores simplifican mucho el trabajo, no excluyen conocer mínimamente las bases de edición de crontab. Un punto a favor de ellos es que si editamos manualmente nuestro crontab y éste no realiza las tareas que le asignamos (y no sabemos por qué), al abrirlo con uno de estos editores es fácil ver dónde se halla el fallo.


[editar] Algunos ejemplos

Algunos ejemplos de líneas que podemos añadir a crontab son:

  • Para el comando ping al equipo 192.168.0.1 cada minuto, de cada hora, de cada día, de cada mes. Es decir, hacer un ping a cada minuto (nótese la terminación en >/dev/null 2>&1 para no recibir la notificación).
* * * * * /sbin/ping -c 1 192.168.0.1 >> /dev/null


  • Para ejecutar lo mismo, pero que el ping sólo se ejecute los días laborables de la semana (de Lunes a Viernes) a las 8:00 PM en punto y sólo durante el mes de octubre.
0 20 * 10 1-5 /sbin/ping -c 1 192.168.0.1 >> /dev/null


  • Para ejecutar un script de respaldo en python de lunes a domingo a medianoche (0:00 AM) los días 1, 15 y 28 de cada mes (para asegurarnos que en febrero también se haga)
0 0 1,15,28 * * /home/mmonrdz/scripts/respaldar.py


  • Para ejecutar un script que actualiza la base de datos de cotizaciones todos los lunes a las 7:00 AM, 7:50 AM, 8:00 AM y 8:50 AM sin enviar el e-mail de notificación.
0,50 7,8 * * 1 /home/mmonrdz/scripts/dbcotiza.pl >/dev/null 2>&1


  • Para abrir un terminal de Gnome (consola de comandos) y ejecutar en ella rtorrent cada día a la 1 a.m.:
0 1 * * * DISPLAY=":0" gnome-terminal --command=rtorrent



[editar] Ver también


[editar] Fuentes

Herramientas personales