Configuración del cron en linux

Lectura Tiempo de lectura: 10 minutos.
Eduardo Collado
7 de diciembre de 2016

A veces necesitamos que nuestro servidor realice tareas de forma automática cada cierto tiempo, estas tareas se configuran con la herramienta crontab.


Cada usuario del sistema tiene su propio crontab a cual puede verse con crontab -l y puede editarse con crontab -e. Si somos root podremos editar el crontab de cualquier usuario añadiendo simplemente -u y el usuario.

crontab -u usuario21 -e  #con esto editamos el cron de usuario21 
crontab -u usuario21 -l  #con esto visualizamos el cron de usuario21

Para escribir una tarea en el crontab tenemos que seguir el siguiente formato:

* * * * * comando > salida

Esos 5 asteriscos que van antes del comando son por este orden:

Así pues si quisiéramos que se ejecutara un comando a las 3 y cuarto de la mañana los sábados de Febrero pondríamos lo siguiente:

15 3 * 2 6 comando > salida

Parece un poco confuso, este formato lo que hace es ejecutar si se cumplen todas las condiciones. Si os fijáis lo único que hemos hecho ha sido cambiar cada asterisco por su correspondencia, excepto el tercero que son los días del mes que hemos dicho todos. Esto se ejecutará cuando el reloj tenga los minutos en 15, la hora en 3, cualquier día del mes, en el mes de Febrero y que sea sábado.


Ahora vamos a ir un poco más allá, queremos que se ejecute a la 1 de la mañana y a las 4 de la tarde los martes:

0 1,16 * * 2 comando > salida

Hay que fijarse que hemos puesto ahora una coma, para decir a la 1 de la mañana y a las 4 de la tarde (las 16 horas).


Y ahora vamos a ir un poco más allá, queremos que el comando se ejecute cada 15 minutos, pero solo a la 1 de la mañana y a las 4 de tarde los sábados.

*/15 1,16 * * 6 comando > salida

Ahora además de la coma tenemos un /, esto significa cada 15, si quisieramos que fuera cada 2 pondríamos /2 y así todo el rato.


Y si ahora queremos que lo haga cada 15 minutos, pero empezando en el minuto 0 lo que haríamos sería:

0/15 1,16 * * 6 comando > salida

Al final es simplemente pillarle el tranquillo a esto, un último ejemplo, queremos que se ejecute cada dos días a las 2 y 10 de la mañana

10 2 */2 * * comando > salida

Por supuesto a partir de aquí podemos avanzar mucho más diciendo que se ejecute de forma anual @yearly, etc.. hay muchas más posibilidades, pero para un funcionamiento estándar aquí tenéis lo que necesitáis.


En cuanto al comando no es más que el comando que queráis ejecutar, por ejemplo:

10 2 */2 * * php /srv/www/midominio.tld/www/holacaracola.php

Muy importante es siempre introducir el path completo en el crontab, esto nos va a ahorrar muchos dolores de cabeza y problemas futuros, recordad, siempre el path completo.


Y por último la salida, lo cual es muy importante, lo ideal es terminar con > /dev/null 2>&1, que viene a significar que no saque ni resultado ni error. Esto si lo desglosamos podemos leerlo así:

> es la redirección
/dev/null los datos se enviarán a /dev/null, es decir, a un agujero negro
2 Indica el descriptor de la Standard Error
> es la redirecciónb
& Este símbolo indica que es un descriptor y no un fichero
1 Es el descriptor para la Standard Out

Para configurar el crontab en Neodigit es realmente fácil, hay que ir al alojamiento que tengamos, ya sea alojamiento suelto o esté en un multidominio o servidor cloud con panel, y ahí pincharemos en el botón alojamiento y la última opción es «Tareas de cron», así de fácil y sencillo.

Captura de pantalla 2016 12 08 a las 0.38.47
Localización del cron
crontab


Al entrar en Tareas de cron obtendréis la siguiente pantalla donde podréis introducir vuestro crontab.

 

Posts relacionados

Una respuesta a “Configuración del cron en linux”

  1. Monclus dice:

    Gracias Eduardo, Lo he conseguido hacer funcionar gracias a esta publicación. A ver si ahora sé sacarle partido.

    (Te informo que las imágenes de tu artículo han «desaparecido»)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *