Un trabajo cron ejecuta un comando según un horario, en segundo plano, independientemente de si alguien visita su sitio o no. Esta guía cubre cómo añadir uno en KPanel, cómo escribir correctamente el horario y el comando para esta plataforma, cómo reemplazar el poco fiable programador integrado de WordPress, y cómo encontrar la salida cuando un trabajo no hace lo que usted esperaba.
Dónde Vive el Cron en KPanel
El cron pertenece a un sitio, así que se accede a él desde el sitio y no desde el menú principal:
- Inicie sesión en KPanel y haga clic en Sitios web en la barra lateral izquierda.
- Haga clic en el sitio que desea.
- En el menú propio del sitio, abra Configuración y luego Cron.
La dirección directa es /websites/<site-id>/cron. Verá una tabla de los trabajos existentes, o un estado vacío si el sitio no tiene ninguno.

Añadir un Trabajo
Haga clic en Añadir Trabajo Cron en la parte superior derecha. El formulario tiene tres campos.
Horario
Seis botones predefinidos completan la expresión por usted:
| Botón | Expresión |
|---|---|
| Cada minuto | * * * * * |
| Cada 5 min | */5 * * * * |
| Cada hora | 0 * * * * |
| Diariamente a las 2 AM | 0 2 * * * |
| Cada domingo | 0 2 * * 0 |
| Mensual 1º | 0 2 1 * * |
O escriba la suya en Expresión cron. Los cinco campos, en orden, son minuto, hora, día del mes, mes y día de la semana:
minute hour day-of-month month day-of-week
0 3 * * *se ejecuta a las 3:00 am todos los días.*/15 * * * *se ejecuta cada quince minutos.0 9 * * 1se ejecuta a las 9:00 am todos los lunes.30 1 1 * *se ejecuta a la 1:30 am el primer día de cada mes.0 */6 * * *se ejecuta cada seis horas, en punto.
Etiqueta
Un nombre que reconocerá más tarde, como WordPress cron o Nightly stock sync. Es lo que muestra la tabla de trabajos, así que hágalo descriptivo: job 3 no ayuda a nadie a las 2 am.
Comando
El comando de shell que se ejecutará. Haga clic en Save para crear el trabajo.
Use rutas completas. El cron se ejecuta con un entorno mínimo y sin ninguno de los perfiles de su shell, así que un php simple o un directorio relativo que funciona cuando usted está conectado por SSH fallará aquí de forma silenciosa. Escriba la ruta completa, siempre.
Cómo Escribir el Comando
Los trabajos se ejecutan como el propio usuario del sistema de su sitio, así que su directorio de inicio es el ancla correcta y ~ se resuelve correctamente. Los archivos de su sitio se encuentran en:
~/htdocs/yourdomain.co.nz
Puede confirmar la ruta exacta en la pestaña Configuración y luego SFTP del sitio, que la muestra bajo Archivos del sitio.
Comandos típicos:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
Pruebe el comando antes de programarlo. Péguelo en la sección WordPress y luego Console del sitio si es un comando wp, o ejecútelo por SSH. Un trabajo que nunca iba a funcionar es mucho más fácil de detectar en el indicador de comandos que a las 3 am en un archivo de registro.
Reemplazar el Programador Integrado de WordPress
WordPress viene con su propio pseudo-programador, WP-Cron, que solo se activa cuando alguien carga una página. En un sitio con poco tráfico, las publicaciones programadas se publican tarde y los correos se acumulan sin enviarse. En un sitio con mucho tráfico, cada visitante paga el coste de comprobar el horario.
Un trabajo cron real soluciona ambos problemas. KPanel hace todo el cambio por usted:
- Abra el sitio y luego la pestaña WordPress.
- Abra la sección WP-Cron.
- Haga clic en Activar cron del sistema.
Eso añade un horario que ejecuta WP-Cron cada cinco minutos y establece DISABLE_WP_CRON para que las cargas de página dejen de activarlo también. Eliminar cron del sistema en la misma pantalla revierte ambas partes.
Si prefiere hacerlo manualmente, son dos pasos:
Desactive la versión activada por visitantes. Añada esto a wp-config.php, encima de la línea /* That's all, stop editing! */, usando Configuración y luego Gestor de archivos:
define( 'DISABLE_WP_CRON', true );
Añada el trabajo real. En Configuración y luego Cron:
- Horario:
*/5 * * * * - Etiqueta:
WordPress cron - Comando:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
No se salte la parte de DISABLE_WP_CRON. Con ambos ejecutándose, cualquier tarea programada puede activarse dos veces: correos duplicados, procesamiento de pedidos duplicado, cargos duplicados en un complemento de suscripción. Use la acción de un clic en la sección WP-Cron y esto no le podrá pasar.
WooCommerce y las Colas en Segundo Plano
WooCommerce usa una cola en segundo plano para los cambios de estado de pedidos, renovaciones de suscripciones, correos y actualizaciones de stock. Depende de WP-Cron, así que es exactamente la carga de trabajo que sufre en una tienda con poco tráfico.
Una vez que el horario real está en marcha, la cola se procesa cada cinco minutos. Obsérvela en WooCommerce, luego Status, luego Scheduled Actions en wp-admin.
Una tienda de alto volumen puede pasar a */2 * * * *. Bajar de eso rara vez ayuda: pasa más tiempo iniciando procesos que haciendo trabajo. Consulte Configuración de WooCommerce.
Gestionar los Trabajos Existentes
La tabla de trabajos muestra Label, Schedule, Command, Última ejecución y Status, con dos acciones en cada fila:
- Disable pausa un trabajo sin eliminarlo, y se convierte en Enable para reactivarlo. Use esto cuando esté comprobando si un trabajo está causando un problema.
- Delete lo elimina de forma permanente. Se le pedirá confirmación, y las ejecuciones programadas se detienen de inmediato.
Eliminar un trabajo cron no se puede deshacer. El horario se elimina del servidor en ese mismo momento. Si solo quiere detenerlo temporalmente, use Disable.
Encontrar la Salida
Cada trabajo que crea KapsuleHost tiene su salida capturada para usted. La salida estándar y los errores se añaden a un archivo de registro en un directorio cron-logs dentro del directorio de inicio del usuario del sitio, un archivo por trabajo.
Ese registro es la respuesta a casi cualquier pregunta de "¿se ejecutó mi trabajo?", porque registra lo que imprimió el comando y cualquier error que generó.
Para leerlo, conéctese por SSH y busque en ~/cron-logs/. SSH usa autenticación por clave, así que añada primero su clave pública desde la pestaña Configuración y luego Claves SSH del sitio: consulte Añadir claves SSH.
El Gestor de archivos y las cuentas SFTP están confinados a su directorio de sitio, ~/htdocs/yourdomain.co.nz, y cron-logs se encuentra un nivel por encima. Esto es deliberado: mantiene a un contratista con acceso SFTP fuera de todo excepto del sitio web. Use SSH nativo para acceder a los registros, o redirija la salida a su directorio de sitio como se muestra a continuación.
Si prefiere tener la salida en algún lugar que el Gestor de archivos pueda abrir, rediríjala usted mismo:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
2>&1 envía los errores al mismo archivo que la salida normal. Sin eso, los errores no van a ningún lugar.
Cualquier cosa dentro de su directorio de sitio puede potencialmente solicitarse por la web. Coloque un registro redirigido bajo wp-content en lugar de en la raíz del sitio, déle un nombre que nadie adivine, y elimínelo una vez que haya terminado de depurar.
Buenas Prácticas
- Escalone sus horarios. Seis trabajos configurados todos a
0 2 * * *comienzan todos a la vez. Repártalos:0 2,10 2,20 2. - No use cada minuto a menos que realmente lo necesite.
*/5es suficiente para casi todo, incluidos WordPress y WooCommerce. - Mantenga los trabajos cortos. Un trabajo que tarda más que su intervalo se solapará con la siguiente ejecución.
- Redirija la salida de cualquier cosa ruidosa, para que un trabajo con mucha salida no llene su disco.
- Revise la lista de vez en cuando. Los trabajos que quedaron de un complemento que eliminó siguen ejecutándose.
Solución de Problemas
El trabajo nunca parece ejecutarse. Compruebe primero la ruta. Abra el archivo de registro. Luego confirme que el estado es Active y no Disabled. Luego ejecute el mismo comando por SSH y vea qué dice.
"command not found" en el registro. Falta la ruta completa. Use /usr/bin/php, /usr/bin/wp, /usr/bin/curl en lugar del nombre simple.
Permiso denegado. El trabajo se ejecuta como el usuario del sistema de su sitio. Ese usuario necesita ser propietario, o al menos poder leer, todo lo que el comando toca. Compruebe los permisos en Usar el Gestor de archivos.
Las tareas de WordPress siguen ejecutándose tarde. Confirme que ambas partes del cambio están en su lugar: el horario existe en Configuración y luego Cron, y DISABLE_WP_CRON está configurado. La sección WP-Cron en la pestaña WordPress muestra el estado actual de ambos.
El trabajo se ejecuta pero el sitio va lento mientras lo hace. Muévalo a una hora más tranquila, o divida el trabajo en lotes más pequeños. El uso de recursos a nivel de sitio es visible en Rendimiento: consulte Mejorar la velocidad del sitio web.
Un trabajo dejó de funcionar tras una actualización de complemento. La ruta del comando puede haber cambiado. Compruebe el registro, luego actualice el comando desde la tabla de trabajos eliminando el trabajo antiguo y añadiendo uno corregido.