HestiaCP es un panel de código abierto que permite gestionar entre muchas otras cosas webs, correos, bases de datos, etc. Entre todo eso, hay la posibilidad de configurar Tareas que se lancen cada cierto tiempo. Estas Tareas se asemejan mucho a los Crons que utilizan las distribuciones de GNU/Linux.
A continuación os explicamos como debes de configurar las Tareas en HestiaCP y como se deben de rellenar todos los datos necesarios así como comprobar que se lanzan correctamente.
Conceptos básicos de las Tareas
En cada usuario que tengamos en HestiaCP tendremos la opción de Tareas, por ejemplo, el usuario admin que hay por defecto, dispone de sus Tareas:
Estas Tareas son principalmente para el buen funcionamiento de HestiaCP, actualizan datos del panel, crean backups de los usuarios, actualizan estados, revisan si hay actualizaciones disponibles, etc.
Seguramente en un usuario nuevo, no disponga de ninguna Tarea, pero podemos añadir una haciendo clic sobre el botón Añadir Tarea Programada:
A continuación os explicamos que significado tiene cada parámetro de las Tareas:
- Comando: Comando que se debe de ejecutar. Se debe de añadir la ruta absoluta del comando más la ruta absoluta del fichero que se deje de ejecutar. Si no sabes la ruta absoluta del comando, puedes acceder por SSH al servidor y ejecutar el comando: whereis [comando] (por ejemplo: whereis php8.1).
- Minuto: Minuto a la que se debe de ejecutar la Tarea.
- Hora: Hora a la que se debe de ejecutar la Tarea.
- Día: Días que se debe de ejecutar la Tarea.
- Mes: Mes que se debe de ejecutar la Tarea.
- Día de la semana: Que días se debe de ejecutar la Tarea.
Cuándo ejecutar la Tarea
En HestiaCP tienes la opción de configurar automáticamente la fecha en la que quieres que se ejecute la Tarea, simplemente debéis de desplegar y seleccionar el momento. Si necesitáis algo más especifico, podéis usar la web Crontab.guru.
Añadir Tarea para ejecutar ficheros en PHP
Para añadir una Tarea para ejecutar un fichero en PHP debéis de poner lo siguiente:
Buscar ruta absoluta del comando
Recuerda que para mostrar la ruta absoluta del comando para ejecutar un script en PHP debe ser php8.1 (para la versión de PHP 8.1, si usas otra deberás de poner el comando correcto), pero con la ruta absoluta, por lo que deberás de acceder por SSH al servidor y ejecutar lo siguiente:
$ whereis php8.1
bash: /usr/bin/php8.1
Añadir Tarea para ejecutar ficheros en Bash
Para añadir una Tarea para ejecutar un fichero BASH debéis de poner lo siguiente:
Buscar ruta absoluta del comando
Recuerda que para mostrar la ruta absoluta del comando para ejecutar un script en BASH debe ser bash, pero con la ruta absoluta, por lo que deberás de acceder por SSH al servidor y ejecutar lo siguiente:
$ whereis bash
bash: /usr/bin/bash
Añadir Tarea para ejecutar ficheros en Python
Para añadir una Tarea para ejecutar un fichero en Python debéis de poner lo siguiente:
Buscar ruta absoluta del comando
Recuerda que para mostrar la ruta absoluta del comando para ejecutar un script en Python debe ser python3, pero con la ruta absoluta, por lo que deberás de acceder por SSH al servidor y ejecutar lo siguiente:
$ whereis python3
python3: /usr/bin/python3
Añadir Tarea para ejecutar ficheros en NodeJS
Para añadir una Tarea para ejecutar un fichero en NodeJS debéis de poner lo siguiente:
Buscar ruta absoluta del comando
Recuerda que para mostrar la ruta absoluta del comando para ejecutar un script en NodeJS debe ser node, pero con la ruta absoluta, por lo que deberás de acceder por SSH al servidor y ejecutar lo siguiente:
$ whereis node
node: /usr/bin/node
Comprobar que se ejecuta correctamente nuestra Tarea
Para revisar que nuestra Tarea se está ejecutando correctamente, deberemos de acceder al servidor por SSH y revisar el registro de log /var/log/syslog.
Para buscar si se ejecuta correctamente, deberemos de filtrar con el comando grep diferentes palabras clave para saber que se ejecuta correctamente la Tarea.
Por ejemplo, buscar por el usuario que lo ejecuta (que es el usuario de HestiaCP):
grep CRON /var/log/syslog | grep admin
O buscar por el nombre del fichero:
grep crontab.php /var/log/syslog
Estos dos comandos, deberían de mostrar algo similar a esto:
Jul 11 11:18:01 hestia CRON[76648]: (admin) CMD (sudo /usr/local/hestia/bin/v-update-sys-queue restart)
Jul 11 11:20:01 hestia CRON[77110]: (admin) CMD (sudo /usr/local/hestia/bin/v-update-sys-queue backup)
Jul 11 11:20:01 hestia CRON[77111]: (admin) CMD (sudo /usr/local/hestia/bin/v-update-sys-queue restart)
Jul 11 11:20:01 hestia CRON[77112]: (admin) CMD (sudo /usr/local/hestia/bin/v-update-sys-rrd)
Jul 11 11:20:01 hestia CRON[77115]: (admin) CMD (/usr/bin/php8.1 /home/admin/web/laravel.com/public_html/crontab.php)
Jul 11 11:22:01 hestia CRON[77421]: (admin) CMD (sudo /usr/local/hestia/bin/v-update-sys-queue restart)
Jul 11 11:22:01 hestia CRON[77422]: (admin) CMD (/usr/bin/php8.1 /home/admin/web/laravel.com/public_html/crontab.php)
Jul 11 11:24:01 hestia CRON[77482]: (admin) CMD (sudo /usr/local/hestia/bin/v-update-sys-queue restart)
Jul 11 11:24:01 hestia CRON[77483]: (admin) CMD (/usr/bin/php8.1 /home/admin/web/laravel.com/public_html/crontab.php)