Proceso en segundo plano que se ejecuta desde que arranca el sistema. Comprueba cada minuto si existe alguna tarea (job) para ejecutar según la hora configurada.
Localización de inicio: /etc/rc.d/ o /etc/init.d
Archivos que revisa: /etc/crontab y /var/spool/cron
Archivo de texto con formato especial diseñado para ser leído por Cron. Contiene la lista de todos los scripts a ejecutar.
Cada usuario tiene su propio crontab — almacenados en /var/spool/cron/crontabs/
Se edita con el comando: crontab -e
Es muy importante que la hora y zona horaria estén bien configuradas — de lo contrario los jobs se ejecutarán en horas incorrectas. Para verificarlo:
# Verificar hora, zona horaria y sincronización NTP
timedatectl
# Configurar zona horaria si es incorrecta
timedatectl set-timezone Europe/Madrid
# Verificar estado del servicio cron
systemctl status cron
# Iniciar cron si no está activo
sudo systemctl start cron
# Habilitarlo para que inicie con el sistema
sudo systemctl enable cron
/etc/ntp.conf.La sintaxis de Crontab tiene cinco campos de tiempo más el comando a ejecutar. Su nombre viene de la palabra griega Kronos (tiempo), que es precisamente la clave de su funcionamiento.
0 – 59
0 – 23
1 – 31
1 – 12
0 – 6 (0=domingo)
también: Mon, Tue...
= cualquier valor
@annually)* * * * * = cada minuto.1,15,30 = minutos 1, 15 y 30.1-5 = del lunes al viernes (días 1 a 5).*/10 en minutos = cada 10 minutos.# son ignoradas. Útil para documentar las tareas.rango/excep: crea excepciones en la regla. Limita el rango con exclusiones.nano consulta.sh — abre el editor en el directorio donde quieres guardar el script.#!/bin/bash para indicar el intérprete.chmod +x consulta.sh o chmod ugo+x consulta.sh — esencial o Cron no podrá ejecutarlo../consulta.sh — verificar que funciona antes de añadirlo al crontab.crontab -e — editar el crontab del usuario actual y añadir la tarea.#!/bin/bash
# Script de ejemplo
# Lista el contenido del directorio raíz y guarda en archivo
sudo ls -l / > archivoResultado.txt
# Dar permisos de ejecución
chmod +x consulta.sh
# O bien: chmod ugo+x consulta.sh
# Probar el script manualmente
./consulta.sh
# Ver el resultado
cat archivoResultado.txt
chmod +x el script nunca será ejecutado por Cron. Es uno de los errores más comunes al configurar tareas automáticas.| Expresión Crontab | Cuándo se ejecuta |
|---|---|
| 00 19 * * * usuario /ruta/script.sh | Todos los días a las 19:00 h |
| 00 19 * * 0 usuario /ruta/script.sh | Todos los domingos a las 19:00 h |
| 00 19 4 2 * usuario /ruta/script.sh | El 4 de febrero a las 19:00 h |
| */10 * * * * usuario /ruta/script.sh | Cada 10 minutos |
| 0 9-18 * * 1-5 usuario /ruta/script.sh | Cada hora, de 9 a 18h, de lunes a viernes |
| 0 0 1,15 * * usuario /ruta/script.sh | A medianoche el día 1 y 15 de cada mes |
| @reboot usuario /ruta/script.sh | Una vez al arrancar el sistema |
| @daily usuario /ruta/script.sh | Todos los días a medianoche |
# Todos los días a las 19:00
00 19 * * * usuario /ubicacion/del/script/consulta.sh
# Todos los domingos a las 19:00
00 19 * * 0 usuario /ubicacion/del/script/consulta.sh
# El 4 de febrero a las 19:00
00 19 4 2 * usuario /ubicacion/del/script/consulta.sh
# Cada 10 minutos (cualquier hora, cualquier día)
*/10 * * * * usuario /ubicacion/del/script/script.sh
# Con MAILTO para notificaciones por correo si hay errores
MAILTO="tu.correo@ejemplo.com"
0 19 * * * usuario /ubicacion/del/script/script.sh
crontab para gestionar jobs del usuario.crontab backup.txtRequiere privilegios de root. Se usa para servicios del sistema o trabajos críticos. Incluye un campo extra con el nombre de usuario con el que ejecutar el comando.
Editado con: sudo crontab -e
Cada usuario puede instalar sus propios jobs con crontab -e. Solo puede ser lanzado por el usuario que creó el crontab.
Almacenados en: /var/spool/cron/crontabs/
crontab.gurucrontab-generator.orgeasycron.comcronmaker.com# Logs generales del sistema (incluye cron)
cat /var/log/syslog | grep CRON
# Ver en tiempo real
tail -f /var/log/syslog | grep CRON
# Guardar salida de un job en log propio
0 19 * * * usuario /ruta/script.sh >> /var/log/mi_cron.log 2>&1
/var/log/syslog. Se guardan todas las ejecuciones de cron, no solo las del usuario. Usa grep CRON para filtrar.Limitar recursos de una tarea con nice y cpulimit
# Ejecutar con baja prioridad de CPU (nice -n 19 = prioridad mínima)
0 19 * * * usuario nice -n 19 /ubicacion/del/script/script.sh
# Limitar uso de CPU al 50% con cpulimit
0 19 * * * usuario cpulimit -l 50 /ubicacion/del/script/script.sh
.plist.StartCalendarInterval. Apple lo recomienda como sustituto oficial de cron.systemctl status cron. Si aparece active (running) está funcionando. Para iniciarlo: sudo systemctl start cron. Para que inicie al arrancar: sudo systemctl enable cron./ para intervalos. Ejemplo cada 10 minutos: */10 * * * * usuario /ruta/script.sh. También puedes combinar con rangos: */15 9-18 * * 1-5 = cada 15 min de 9 a 18h los días laborables.MAILTO="tu.correo@ejemplo.com" antes de la tarea. También puedes redirigir errores a log: /ruta/script.sh >> /var/log/mi_cron.log 2>&1nice -n 19 /ruta/script.sh (19 = prioridad mínima). Usa cpulimit para limitar porcentaje: cpulimit -l 50 /ruta/script.sh (50% CPU máximo).crontab -l > ~/crontab_backup.txt. Guarda el archivo en lugar seguro. Para restaurar: crontab ~/crontab_backup.txt. Recomendado hacerlo antes de cualquier modificación importante.~/programas.txt. Ejemplo completo y reproducible.sudo chmod +x /usr/local/bin/log_programa.shsudo crontab -e y añadir la línea @reboot /usr/local/bin/log_programa.sh al final.sudo reboot y después cat ~/programas.txt para ver las entradas.sudo nano /usr/local/bin/log_programa.sh
#!/bin/bash
# Script que registra la fecha y hora de inicio del sistema
OUT="/home/jose/programas.txt" # cambia 'jose' por tu usuario real
echo "Programa emitido el: $(date '+%Y-%m-%d %H:%M:%S')" >> "$OUT"
# Dar permisos de ejecución
sudo chmod +x /usr/local/bin/log_programa.sh
# Editar crontab del sistema (root)
sudo crontab -e
# Añadir al final del archivo crontab:
@reboot /usr/local/bin/log_programa.sh
# Reiniciar el sistema
sudo reboot
# Tras iniciar sesión, verificar el archivo
cat ~/programas.txt
Programa emitido el: 2025-09-30 16:45:12Programa emitido el: 2025-09-30 17:10:47/home/jose/ existe antes de reiniciar. Si el directorio no existe o el script se ejecuta como root, el archivo puede no crearse en el lugar esperado. Usa la ruta absoluta correcta de tu usuario.