¿Cómo ejecutar scripts a través de tareas programadas de cron?

Actualizado el 09 de noviembre, 2016. Por BlueHosting.

En UNIX, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos de forma programada (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el archivo crontab. cPanel permite la configuración de tareas programadas de una forma un poco más simple, ya que no se requiere la configuración del crontab en la línea de comandos. En esta guía explicamos cómo configurar tareas cron a través de cPanel.

Consideraciones

Si usted quiere ejecutar scripts en una base programada, tenga en cuenta lo siguiente:

  1. De acuerdo con nuestras políticas de uso, se prohíbe ejecutar tareas cron con intervalos de menos de 15 minutos, o configurar más de 5 tareas cron simultáneas.
  2. Si usted no agrega >/dev/null 2>&1 al final del comando, el servidor enviará una notificación de correo electrónico cada vez que se ejecuta una tarea cron. Aunque esto puede ser útil para propósitos de prueba y supervisión, si no se atienden, estos correos pueden recargar las cuentas especificadas en el campo Cron email. Si el correo es una de sus cuentas de cPanel, entonces puede haber problemas con el uso de disco e inodos.

Nota: si el script no genera ninguna salida, es posible que la notificación de correo electrónico tampoco se envíe; sin embargo, la tarea programada de cron podría estar funcionando.

Configurar una tarea cron

Para configurar una tarea cron inicie sesión en cPanel y seleccione Trabajos de cron bajo la sección "Avanzada":

Anexo 1 Trabajos cron

Para añadir una nueva tarea o trabajo cron llene los campos en la sección "Añadir nuevo trabajo de cron":

Anexo 2 Añadir tarea cron

El formato general para una tarea de cron es como sigue:

[Ruta al entorno] [Ruta al script] [Parámetros del script] 

Por ejemplo, si usted desea ejecutar un script PHP que está ubicado en el directorio public_html, el comando que debe usar será similar al siguiente:

/usr/local/bin/php /home/usuariocPanel/public_html/nombre_del_script.php 

Si necesita usar una ruta relativa, entonces divida los comandos distintos con punto y coma ;:

cd /home/YourcPuser/public_html/; /usr/local/bin/php nombre_del_script.php

Para ejecutar scripts en Python y Perl no es necesario usar una ruta completa al entorno. La directiva para el intérprete del lenguaje será suficiente en servidores compartidos:

python /home/usuariocPanel/public_html/nombre_del_script.py

perl /home/usuariocPanel/public_html/nombre_del_script.pl

De forma alternativa, puede simplemente usar solicitudes curl en el comando de la tarea cron para los mismos propósitos:

curl “http://yourdomain.com/script.php?argument1=arg1&argument2=arg2” 
curl “http://yourdomain.com/script.py” 
curl “http://yourdomain.com/script.pl”

Sin embargo, a diferencia del primer método, los trabajos cron basados en curl funcionarán solamente si las direcciones URL especificadas en las solicitudes curl son resueltas. Por ejemplo: si los registros DNS para el dominio son correctos y están en funcionamiento.

También puede verificar si un comando cron es ejecutado correctamente corriéndolo en la línea de comandos a través de SSH.

Usaremos un script simple de multiplicación con parámetros externos como ejemplo:

Script de multiplicación simple: scriptejemplo.php

<?php

if ($_GET) {
    // se pasan los parámetros en casos de acceso basado en HTTP
    $argumento1 = $_GET['arg1'];
    $argumento2 = $_GET['arg2'];
} else {

    // se pasan los argumentos en CLI a través del arreglo argv[]

$argumento1 = $argv[1];
$argumento2 = $argv[2];
}

$resultado = $argumento1 * $argumento2;

echo " $argumento1 x $argumento2 = $resultado \n ";

?>

Añadimos nuestro script a nuestro directorio public_html y haremos algunas pruebas para observar su ejecución.

Comencemos con la ejecución vía navegador. Para hacerlo, usaremos nuestro dominio seguido del nombre del script y la directiva ? asignando valores aleatorios a nuestro script.

Anexo 3 ejecución script navegador

Para obtener el mismo resultado a través de una tarea cron, usaremos este comando agregando los parámetros después de ruta donde se encuentra el script:

/usr/local/bin/php /home/ejemplo/public_html/scriptejemplo.php 3 5 

Obtendremos entonces el mismo resultado a través de una notificación en nuestro correo electrónico.

Desde la línea de comandos, puede usar el comando cron o una solicitud CURL para obtener el mismo resultado:

/usr/local/bin/php /home/ejemplo/public_html/scriptejemplo.php 3 5 
5 x 3 = 15

Para hacerlo a través de CURL:

curl "http://www.ejemplo.cl/scriptejemplo.php?arg1=5&arg2=3"
5 x 3 = 15

Recursos adicionales

Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tenga en cuenta que no podemos certificar su actualidad o precisión.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...