Crear CronJobs Debian
Crontab
Este es mi primer post en steemit, voy a intentar ser lo mas breve y explicativo posible.
Basicamente un CronJob nos brinda la opción de correr un script cada cierto tiempo según lo especifiquemos. Cabe resaltar que toda distribución de linux cuenta con esta potente herramienta.
Iniciare creando un ejemplo sencillo, la creación de un mediante un script bash. Por procedemos a crear el archivo con un:
nano test.sh
Una vez dentro procedemos con el siguiente código
#!/bin/sh
mkdir /var/test
Donde #!/bin/sh significa que la secuencia de comandos debe ejecutarse siempre con bash, en lugar de otro shell. /bin/sh es un ejecutable que representa el shell del sistema.
Donde mkdir es un comando para crear un directorio en linux, /var/test, donde var es el lugar especifico en el servidor y test el nombre del directorio.
Nuestro archivo test.sh deberá quedar de la siguientes manera:
Vamos a proceder a ejecutarlo de manera manual desde la consola de linux para confirmar que funciona correcta, para lo cual ejecutamos el siguiente comando:
sh test.sh
Una vez ejecutado el script, nos colocamos en la carpeta var de nuestro servidor y luego ejecutamos un ls para mostrar los archivos y directorios.
cd /var
ls
Y nuestro archivo test debe aparecer:
Una vez realizada la prueba de nuestro script, procedemos agregarlo al crontab para dejarlo configurado automáticamente, por lo cual ejecutamos el comando:
nano /etc/crontab
Una vez en el crontab tenemos diferentes opciones para ejecutar nuestro script, las tareas cron siguen una determinada sintaxis. Tienen 5 asteriscos seguidos del comando a ejecutar. Ahora explicaré para qué sirve cada cosa.
* * * * * root sh /test.sh
Los 5 asteriscos
De izquierda a derecha, los asteriscos representan:
Minutos: de 0 a 59.
Horas: de 0 a 23.
Día del mes: de 1 a 31.
Mes: de 1 a 12.
Día de la semana: de 0 a 6, siendo 0 el domingo.
Si se deja un asterisco, quiere decir "cada" minuto, hora, día de mes, mes o día de la semana. Por ejemplo:
* * * * * root sh /test.sh
Ejecuta este script:
Cada minuto
De cada hora
De cada día del mes
De cada mes
De cada día de la semana
Otro ejemplo sería:
00 8 * * 1,3,5 root /test.sh
Ejecutar este script:
En el minuto 0
De las 8 de la mañana
De cada día del mes
De cada mes
Lunes, Miércoles y Viernes.
En otras palabras este script correrá los días Lunes , Miércoles, Viernes de cada semana a las 8:00 AM.
INTERVALOS DE TIEMPO
Ejecutar nuestro script de lunes a viernes a las 8:30 horas:
30 8 * * 1-5 /test.sh
PALABRAS RESERVADAS
Muchas veces tenemos palabras reservadas para facilitar el uso de programas o lenguajes de programación. Cron no podía ser menos, así que tenemos algunas que suelen ser las más comunes. Ya cada uno que lo configure conforme a sus necesidades. Aquí van:
@reboot: se ejecuta una única vez al inicio.
@yearly/@annually: ejecutar cada año.
@monthly: ejecutar una vez al mes.
@weekly: una vez a la semana.
@daily/@midnight: una vez al día.
@hourly: cada hora.
Por ejemplo, para ejecutar el script cada hora:
@hourly root sh /test.sh
Como consejo, poner siempre el usuario root al momento de ejecutar cualquier script en cron, si es un archivo php colocar php en vez de sh. Ejemplo: Archivo test.php que se ejecutará cada 5 minutos.
*/5 * * * * root php /directorio/test.php
Siempre dar todos los permisos al archivo a ejecutar
chmod 777 test.sh
Espero esta información sea de mucha utilidad, cualquier pregunta hacérmela saber con gusto compartiré mis conocimiento.
✅ @ericktabora92, I gave you an upvote on your post! Please give me a follow and I will give you a follow in return and possible future votes!
Thank you in advance!
Muy bueno, yo la frecuencia la cuadraba ubicando el archivo dentro de la carpeta "/etc/cron.daily" o "/etc/cron.weekly" y así cualquier archivo dentro de esas carpetas se ejecutaba con esa frecuencia
Correcto, pero aquí podes elegir la frecuencia que necesitas sin necesidad amarrarse a un archivo ... Además tenés las palabras reservadas