Introducción
Supongamos que desarrolló un sistema para una empresa y en cierto momento esa empresa le solicitó que este sistema necesita enviar ciertos correos electrónicos a sus clientes todos los lunes y su sistema debe realizar copias de seguridad automáticas todos los viernes a las 11:00 p. m.
¿Y ahora? ¿Cómo hacemos esto?
¿Qué es cron?
Bueno, ¡esta es la solución para tu sistema! Cron puede interpretarse como un servicio en los sistemas operativos Linux que permite programar la ejecución de scripts y comandos en determinados momentos programados.
Para ejecutar tareas, cron utiliza un tipo de tabla conocida como crontab. El archivo crontab generalmente se encuentra en el directorio /etc, pero también puede estar en un directorio que crea un crontab para cada usuario del sistema (generalmente en /var/spool/cron/), todo depende de la configuración del sistema operativo utilizado.
Usando cron
El primer paso es abrir crontab. Para hacer esto, puede utilizar los editores de texto del sistema o mediante el comando crontab-e para editar el archivo único de su usuario. En este caso, la edición se realiza como si estuviera usando vi.
El crontab tiene el siguiente formato:
[minutos] [horas] [días del mes] [mes] [días de la semana] [usuario] [comando]
El llenado de cada campo se realiza de la siguiente manera:
- Minutos: ingrese números del 0 al 59;
- Horas: ingrese números del 0 al 23;
– Días del mes: ingrese números del 0 al 31;
- Mes: ingrese números del 1 al 12;
– Días de la semana: ingrese números del 0 al 7;
– Usuario: es el usuario quien ejecutará el comando (no es necesario especificarlo si se utiliza el archivo propio del usuario);
- Dominio: la tarea que se debe realizar.
Tenga en cuenta que el orden de estos valores indica el nombre correspondiente del campo. Por ejemplo, en el campo del mes, del 1 al 12 significa "de enero a diciembre". En el caso de los días de la semana, del 0 al 6 significa “domingo a sábado”. Tenga en cuenta que también se puede utilizar el número 7. En este caso, al igual que el número 0, el 7 equivale a “domingo”. En lugar de estos valores, puede ingresar * (asterisco) para especificar una ejecución constante. Por ejemplo, si el campo de días del mes contiene *, el comando relacionado se ejecutará todos los meses.
También puede ingresar intervalos al completar, separando los números inicial y final usando – (guion). Por ejemplo, si ingresa 2-5 en el campo de horas, el comando relacionado se ejecutará a las 2, 3, 4 y 5 en punto.
¿Qué pasa si el comando se tiene que ejecutar a las 2 de la madrugada, entre las 15 y las 18 horas y a las 22 horas? Simplemente ingrese 2.15-18.22. En estos casos, se separan los parámetros con una coma.
Veamos un ejemplo:
#tarea programada
30 22 3.14 * * echo “Que no cunda el pánico” > /home/dirceu/log.txt
En este ejemplo, la frase “Que no cunda el pánico” se inserta en el archivo log.txt, dentro del directorio /home/dirceu/, a las 22:30 horas, los días 3 y 14, de cada mes y todos los días de la semana. Observe la línea "#tarea programada". Este es un comentario. Escriba # y todo lo escrito en la línea no será considerado por cron. Es una característica útil para insertar descripciones cuando tiene varias tareas por realizar.
comandos crontab
Para acceder a crontab, simplemente escriba este nombre en una terminal seguido de un parámetro. Aquí está la lista de parámetros disponibles:
crontab-e: como ya se mencionó, se utiliza para editar el archivo crontab actual y crear uno, si no existe;
crontab-l: este comando muestra el contenido actual del crontab;
crontab-r: elimina el archivo crontab actual.
Ejecutar scripts PHP en servidores web mediante cron
Ahora que ha aprendido a utilizar cron, ¿cómo podemos ejecutar los scripts de nuestra aplicación?
Para ejecutar scripts PHP, simplemente ingrese el comando php /path/do/script en su cron. Sin embargo, como cada servidor tiene configuraciones diferentes, este comando no siempre se ejecuta correctamente, especialmente en aplicaciones más complejas que utilizan la función “mágica” __autoload de PHP.
EL reyanfitrión por ejemplo, tiene una interfaz realmente genial, rápida y práctica para gestionar tareas programadas a través del propio panel de control (a pesar de cobrar R$ 5,00 por tarea... absurdo...). Ya configuré varias tareas y no tuve ninguna dificultad para hacerlo.
Otros servidores, como Anfitrión de UOL, proporciona acceso SSH para que los clientes configuren sus crons manualmente a través de un terminal SSH de su elección (recomiendo Masilla). En este caso, tuve problemas para configurar algunas tareas cron debido a la función __autoload antes mencionada.
Afortunadamente, aquí está la solución:
wget www.seusite.com.br/seu_arquivo_cron.php
donde el comando wget lee el archivo solicitado, guarda una copia en su servidor y muestra el contenido en la pantalla. Sin embargo, en este caso, no queremos el mensaje en pantalla y mucho menos una copia del script php, ¿verdad? Entonces, pasemos a la solución definitiva:
wget -q --delete-after www.seusite.com.br/seu_arquivo_cron.php
Donde el comando -q inhibe el mensaje generado por wget y el comando –delete-after elimina la copia del archivo creado.

Comentários (0)
Carregando comentários…