En la página «Tareas programadas» del panel de administración se puede ver la frecuencia, la próxima hora de ejecución y el resultado más reciente de cada tarea, pero mucha gente no lo sabe: esos horarios solo son informativos, y lo que realmente hace que las tareas se ejecuten es el cron:run que corre cada minuto en el servidor. Este artículo explica qué hace exactamente y cuándo no surte efecto.

1. Requisito previo: cron:run cada minuto
Las tareas programadas no se activan automáticamente desde la página web según el horario. El servidor debe ejecutar una vez por minuto:
* * * * * /usr/bin/php /var/www/kingcms/x1/bin/kingcms cron:run >> /var/www/kingcms/x1/data/cron.log 2>&1
Se puede usar crontab, un temporizador de systemd, las «Tareas programadas» de 宝塔, el panel del hosting compartido o el Programador de tareas de Windows; seleccione un intervalo de 1 minuto. Cada ejecución de cron:run ejecutará en orden: las tareas programadas registradas por los módulos habilitados, la copia de seguridad automática, el mantenimiento de la base de datos, la comprobación de actualizaciones, la traducción de paquetes de idioma pendiente, la limpieza del sandbox de demostración, la cola de tareas del panel y las tareas personalizadas cuya hora haya llegado. data/cron.lock garantiza que solo se ejecute una a la vez; si la anterior no ha terminado, esta se cierra directamente.
Si no se ha configurado cron:run, la página seguirá mostrando la frecuencia y la próxima hora de ejecución, pero no se ejecutará nada cuando llegue el momento; si el programador lleva más de 10 minutos sin ejecutarse, aparecerá una barra de advertencia amarilla en la parte superior de la página «Copia de seguridad de datos». Además, el usuario que ejecuta debe tener permisos de escritura sobre data/; de lo contrario, no se podrán crear el archivo de bloqueo, los registros ni las copias de seguridad.
2. Tareas del sistema
Las tareas del sistema son tareas fijas registradas por el núcleo y los módulos habilitados; no se pueden crear, editar ni eliminar, solo hacer clic en «Ejecutar ahora»:
- Tareas programadas de módulos: cada minuto; el nombre muestra el nombre del módulo;
- Copia de seguridad automática: todos los días a las 03:15 (se puede cambiar a todos los lunes o desactivar);
- Mantenimiento de la base de datos: todos los domingos a las 03:45 se ejecuta VACUUM (se puede cambiar la hora o desactivar);
- Comprobación de actualizaciones: cada 6 horas; solo comprueba, no actualiza automáticamente;
- Traducción pendiente de paquetes de idioma: cada minuto; tras configurar el servicio de IA, traduce las entradas de idioma que faltan;
- Limpieza del sandbox de demostración y cola de tareas del panel: cada minuto.
Las tareas desactivadas en la configuración mostrarán «Desactivada», y la próxima hora de ejecución mostrará «—». Al hacer clic en «Ejecutar ahora» se ejecutará una vez de inmediato dentro de la solicitud actual, sin cambiar la frecuencia original; las tareas con comprobación de vencimiento que ya se hayan ejecutado en este ciclo devolverán directamente.

3. Tareas personalizadas: hacer que la IA trabaje periódicamente
Las tareas personalizadas entregan un prompt al asistente de IA a una hora fija para que lo ejecute; son adecuadas para redactar borradores de artículos u organizar contenido periódicamente. El requisito previo es configurar primero el servicio en «Configuración → IA y API → Servicio de IA» y confirmar que está disponible.
Al crear una, se rellenan cuatro campos: nombre de la tarea (máximo 100 caracteres), qué debe hacer la IA (instrucción completa; especifique el tema, el formato y la ubicación de guardado), frecuencia (diaria o semanal) y hora de ejecución (zona horaria del sitio; por defecto, 09:00). Después de guardar, se puede editar, pausar, reanudar, eliminar o ejecutar de inmediato.
Hay que tener en cuenta las reglas de ejecución: la tarea se ejecuta con la identidad de su creador y, al terminar, confirma automáticamente las operaciones pendientes generadas en esta ejecución, por lo que los cambios se escriben directamente en el sitio; el creador debe seguir siendo un administrador activo; de lo contrario, la tarea falla; solo se conserva un resumen del resultado por ejecución (los primeros 120 caracteres de la respuesta del asistente), que se sobrescribe en la siguiente ejecución; la frecuencia solo puede ser diaria o semanal, no se puede configurar cada hora.
4. No se puede usar como Shell
La página de tareas programadas solo muestra las tareas fijas del sistema y las tareas personalizadas de IA; no se pueden crear aquí tareas de comandos Shell ni de scripts. Si necesita ejecutar otros comandos periódicamente en el servidor, escriba directamente en el crontab del sistema, en el panel de 宝塔 u otro programador; no se lo encargue a cron:run.
5. Orden de diagnóstico
- Comprobar si el servidor ejecuta
cron:runcada minuto; - Comprobar si el usuario de ejecución tiene permisos de escritura sobre
data/; - Comprobar si se actualiza «Última ejecución» en la página «Copia de seguridad de datos»;
- Si falla una tarea personalizada, revise «Resultado de la última ejecución»: allí se registrará si no se ha configurado el servicio de IA o si el creador está desactivado;
- Si aún tiene dudas, ejecute manualmente
php x1/bin/kingcms cron:runy revise la salida de la terminal.
Resumen
El núcleo de las tareas programadas no es la página del panel, sino esa entrada de cron:run que se ejecuta cada minuto en el servidor. Solo si la configura correctamente, otorga permisos suficientes sobre data/ y distingue entre tareas del sistema y tareas personalizadas, las copias de seguridad, las traducciones, las notificaciones y la redacción de borradores programados ocurrirán según lo previsto.