Configurar un crontab en Histrix
En Histrix los crons no se configuran directamente en el crontab del sistema — primero se define el trabajo en la base de datos mediante un archivo XML, y luego el servidor ejecuta el cron de Histrix que se encarga de disparar lo que corresponde según el horario configurado.
1. Crear el archivo XML del crontab
Crear el xml que quieres que se ejecute. Tiene que ser procesa="true" para funcionar como cron. El archivo de ejemplo podria ser asi:
<?xml version="1.0" encoding="UTF-8" ?>
<histrix tipo="grid" process="true" procesa="true" inserta="false">
<title></title>
<obs></obs>
<form >
<table id="STK_MUESTRAS">
<movimientos>
<relacion id="actualizar_fecha_upd.xml" />
</movimientos>
<field id="id_muestra"/>
<field id="fecha_remito">
<label>Fecha</label>
</field>
<field id="ahora">
<label>Fecha Actual</label>
<expression>CURDATE()</expression>
</field>
<field id="diferencia">
<label>Diferencia</label>
<expression>DATEDIFF(CURDATE(),fecha_remito)</expression>
<condicion operador=">=">62</condicion>
</field>
<field id= "estado">
<condicion operador="=">0</condicion>
</field>
</table>
</form>
</histrix>
2. Poner en base de datos el crontab
En la tabla HTX_CRONTAB de la base de datos de Histrix, agregar un nuevo registro
con el nombre del archivo XML y la expresión cron con el intervalo deseado:
INSERT INTO HTX_CRONTAB (expression, user, command)
VALUES ('0 0 * * *', 'histrix', 'actualiza_muestras.xml');
3. Configurar el cron en el servidor
El cron se configura en /etc/crontab (el del sistema, no el del usuario)
para que corra con el usuario correcto. Editarlo con:
El comando varía según si Histrix corre nativo o dockerizado.
Histrix nativo
* * * * * www-data /usr/share/histrix/histrix scheduler htx_cliente 1>/tmp/htx_cron.log 2>/tmp/htx_cron_error.log
Histrix por Docker
* * * * * automata docker exec histrix ./histrix scheduler nombre-cliente 1>/tmp/htx_cron.log 2>/tmp/htx_cron_error.log
Usuario en cada caso
En Histrix nativo el usuario es www-data porque es quien corre el proceso web.
En Docker el usuario es automata, que es el que tiene permisos para ejecutar Docker en el servidor.
Verificar que quedó bien