| Expression | Description | Category |
|---|---|---|
* * * * * | Every minute | Frequent |
*/2 * * * * | Every 2 minutes | Frequent |
*/5 * * * * | Every 5 minutes | Frequent |
*/10 * * * * | Every 10 minutes | Frequent |
*/15 * * * * | Every 15 minutes | Frequent |
*/30 * * * * | Every 30 minutes | Frequent |
0 * * * * | Every hour (at :00) | Hourly |
30 * * * * | Every hour at :30 | Hourly |
0 */2 * * * | Every 2 hours | Hourly |
0 */4 * * * | Every 4 hours | Hourly |
0 */6 * * * | Every 6 hours | Hourly |
0 */12 * * * | Every 12 hours | Hourly |
0 0 * * * | Every day at midnight | Daily |
0 1 * * * | Every day at 1:00 AM | Daily |
0 6 * * * | Every day at 6:00 AM | Daily |
0 9 * * * | Every day at 9:00 AM | Daily |
0 12 * * * | Every day at noon | Daily |
0 18 * * * | Every day at 6:00 PM | Daily |
0 23 * * * | Every day at 11:00 PM | Daily |
0 0,12 * * * | Twice daily — midnight and noon | Daily |
0 9 * * 1 | Every Monday at 9:00 AM | Weekly |
0 9 * * 1-5 | Every weekday (Mon–Fri) at 9:00 AM | Weekly |
0 9 * * MON-FRI | Every weekday at 9 AM (named) | Weekly |
0 0 * * 0 | Every Sunday at midnight | Weekly |
0 0 * * 6,0 | Every Saturday and Sunday at midnight | Weekly |
0 8 * * 1,3,5 | Mon/Wed/Fri at 8:00 AM | Weekly |
0 0 1 * * | 1st of every month at midnight | Monthly |
0 0 15 * * | 15th of every month at midnight | Monthly |
0 0 1,15 * * | 1st and 15th of every month | Monthly |
0 0 L * * | Last day of every month (Quartz/AWS) | Monthly |
0 0 1 */3 * | Every 3 months on the 1st at midnight | Monthly |
0 0 1 1 * | January 1st at midnight (New Year) | Yearly |
0 0 1 1,7 * | January 1st and July 1st at midnight | Yearly |
0 9 * * 1#1 | First Monday of every month at 9 AM (Quartz) | Advanced |
0 0 * * 5L | Last Friday of every month (Quartz) | Advanced |
0/30 9-17 * * MON-FRI | Every 30 min 9 AM–5 PM on weekdays | Advanced |
5 4 * * sun | 5 min past 4 AM every Sunday | Advanced |
┌─────────── minute (0–59) │ ┌────────── hour (0–23) │ │ ┌───────── day of month (1–31) │ │ │ ┌──────── month (1–12 or JAN–DEC) │ │ │ │ ┌───────── day of week (0–6, Sun=0 or SUN–SAT) │ │ │ │ │ * * * * * command to execute
| Character | Name | Meaning | Example |
|---|---|---|---|
| * | Wildcard | Any value | * in hour = every hour |
| , | List separator | Multiple values | 1,15 in day = 1st and 15th |
| - | Range | From–to inclusive | 1-5 in weekday = Mon–Fri |
| / | Step | Every N units | */5 in minute = every 5 min |
| ? | No specific value | Ignore field (Quartz/AWS) | ? in day when weekday set |
| L | Last | Last day/weekday | L in day = last day of month |
| W | Weekday | Nearest weekday | 15W = nearest weekday to 15th |
| # | Nth weekday | N-th day in month | 2#1 = 1st Monday |
| Platform | Format | Example |
|---|---|---|
| Linux/macOS crontab | min hr dom mon dow | 0 9 * * 1-5 |
| GitHub Actions | min hr dom mon dow | 0 9 * * 1-5 |
| AWS EventBridge | min hr dom mon dow year | 0 9 ? * MON-FRI * |
| Quartz (Java) | sec min hr dom mon dow [year] | 0 0 9 ? * MON-FRI |
| Kubernetes CronJob | min hr dom mon dow | 0 9 * * 1-5 |
Los campos aceptan sintaxis mixta. Para ejecutar una tarea a las 8 AM y 6 PM en días laborables:
0 8,18 * * 1-5
Para apuntar a meses específicos con un paso:
0 0 1 1-12/3 * # Cada 3 meses comenzando en enero (Ene, Abr, Jul, Oct)
Cuando tanto el día del mes como el día de la semana están establecidos (no *), el comportamiento depende de la implementación. En cron estándar, la tarea se ejecuta si cualquiera de las condiciones se cumple — es una relación OR, no AND. Esto sorprende a muchas personas.
0 0 15 * 1
Aunque no es una expresión cron propiamente, @reboot es un atajo ampliamente soportado:
@reboot /usr/local/bin/start-service.sh
Otros atajos comunes:
| Atajo | Equivalente |
|---|---|
@yearly | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily | 0 0 * * * |
@hourly | 0 * * * * |
El clásico. Edita tu crontab de usuario con crontab -e:
# Ejecutar copia de seguridad todos los días a las 2 AM
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1
Las tareas cron del sistema en /etc/cron.d/ incluyen un campo extra de usuario:
0 2 * * * root /usr/local/bin/cleanup.sh
GitHub Actions usa la misma sintaxis de cinco campos dentro de un trigger schedule. Todos los tiempos son UTC.
on:
schedule:
- cron: '0 3 * * 1-5' # Días laborables a las 3 AM UTC
Para una inmersión profunda en la configuración YAML, consulta YAML para Kubernetes y YAML para Docker Compose.
Si una tarea tarda más que el intervalo entre ejecuciones, obtendrás instancias superpuestas. Un script que se ejecuta durante 8 minutos en un horario */5 * * * * se acumulará.
Soluciones:
flock en Linux)concurrencyPolicy: Forbid en los CronJobs de Kubernetes0 0 31 * * # Solo se ejecuta en meses con 31 días
Esto se ejecuta en enero, marzo, mayo, julio, agosto, octubre y diciembre — pero omite silenciosamente los otros cinco meses. Si necesitas una tarea de fin de mes, considera ejecutarla el 1 y ajustar la lógica de tu script, o usa una herramienta que soporte semánticas de "último día del mes".
Algunas implementaciones de cron requieren una nueva línea al final del archivo crontab. Si tu última entrada no se ejecuta, añade una línea vacía al final.
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: report
image: reporting:latest
command: ["python", "generate_report.py"]
restartPolicy: OnFailure
Una expresión cron es una cadena con 5 o 6 campos (minuto, hora, día del mes, mes, día de la semana y opcionalmente segundos) para programar tareas automatizadas en sistemas tipo Unix.
El asterisco (*) significa 'cada'. Por ejemplo, * en el campo de minutos significa 'cada minuto', * en el campo de horas significa 'cada hora' y así sucesivamente para cada tipo de campo.
El cron estándar de Unix/Linux usa 5 campos (minuto hora día mes día_semana). Muchos planificadores modernos como AWS EventBridge y Kubernetes CronJobs admiten 6 campos con un campo de segundos opcional al inicio o al final.
Usa: 0 9 * * 1-5. Esto significa minuto=0, hora=9, cualquier día del mes, cualquier mes, día de semana lunes(1) hasta viernes(5).