Preguntas
¿Cómo compruebo qué significa una expresión cron?
Pégala en el explicador de cron; imprime la planificación en lenguaje llano y las próximas diez ejecuciones en tu zona horaria.
Orden de los campos, las planificaciones que de verdad se necesitan y las tres trampas que explican la mayoría de las incidencias de «mi trabajo cron no se ejecuta».
┌─ minuto (0–59) │ ┌─ hora (0–23) │ │ ┌─ día del mes (1–31) │ │ │ ┌─ mes (1–12, jan–dec) │ │ │ │ ┌─ día de la semana (0–7, sun–sat; 0 y 7 = domingo) * * * * * comando
| * | todos los valores |
| 5 | exactamente 5 |
| 1-5 | rango |
| */15 | cada 15 |
| 1,15 | lista |
| 8-18/2 | paso dentro de un rango |
| @reboot | una vez al arrancar |
| @hourly | 0 * * * * |
| @daily / @midnight | 0 0 * * * |
| @weekly | 0 0 * * 0 |
| @monthly | 0 0 1 * * |
| @yearly / @annually | 0 0 1 1 * |
| * * * * * | cada minuto |
| */5 * * * * | cada 5 minutos |
| */15 9-17 * * 1-5 | cada 15 min, horario laboral, días laborables |
| 0 * * * * | cada hora, en punto |
| 30 * * * * | cada hora a y media |
| 0 */6 * * * | cada 6 horas (0, 6, 12, 18) |
| 0 0 * * * | cada día a medianoche |
| 0 3 * * * | cada día a las 03:00 |
| 30 6 * * 1-5 | días laborables a las 06:30 |
| 0 9,17 * * 1-5 | días laborables a las 09:00 y 17:00 |
| 0 0 * * 0 | domingos a medianoche |
| 0 0 * * 6,0 | fines de semana |
| 0 0 1 * * | primer día del mes |
| 0 0 1,15 * * | el 1 y el 15 |
| 0 0 1 */3 * | trimestral (1 de ene, abr, jul, oct) |
| 0 0 1 1 * | anual |
| 0 0 * * 1#1 | primer lunes (no estándar; usa 0 0 1-7 * 1) |
| 0 0 1-7 * 1 | primer lunes — cuidado: se dispara los días 1–7 O cualquier lunes; añade la prueba [ $(date +\%u) = 1 ] |
| 0 0 28-31 * * [ $(date -d tomorrow +\%d) = 01 ] && cmd | último día del mes |
| 0 2 * * * sleep $((RANDOM \% 1800)); cmd | 02:00 con hasta 30 min de variación |
/usr/bin:/bin). Usa rutas absolutas o pon PATH=… al principio del crontab.\% (date +\%F).CRON_TZ=Europe/Madrid funciona en cronie.MAILTO=.flock -n /tmp/job.lock cmd.| crontab -e | editar tu crontab |
| crontab -l | listar |
| crontab -r | eliminar todo (¡sin confirmación!) |
| crontab -u www-data -l | el de otro usuario (root) |
| /etc/crontab, /etc/cron.d/* | crontabs del sistema: tienen un campo de usuario tras la planificación |
| /etc/cron.{hourly,daily,weekly,monthly}/ | scripts que se dejan ahí, ejecutados por anacron en escritorios |
| grep CRON /var/log/syslog; journalctl -u cron | ver qué se ejecutó |
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [email protected] SHELL=/bin/bash # m h dom mon dow comando 30 6 * * 1-5 flock -n /run/backup.lock /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Los resultados y mensajes de esta herramienta se muestran en inglés.
Pégala en el explicador de cron; imprime la planificación en lenguaje llano y las próximas diez ejecuciones en tu zona horaria.