~/docs /Cron CHEATSHEET

Cron CHEATSHEET

Cron CHEATSHEET

Imported from Notion: Cron CHEATSHEET

updated:: 2026.07.10

Que resuelve

Referencia rapida para programar tareas con cron, revisar logs y evitar errores de entorno.

Sintaxis

* * * * * comando
| | | | |
| | | | +-- dia de la semana (0-7, domingo 0 o 7)
| | | +---- mes (1-12)
| | +------ dia del mes (1-31)
| +-------- hora (0-23)
+---------- minuto (0-59)

Editar cron

Cron del usuario actual

crontab -e

Listar tareas

crontab -l

Cron de otro usuario

sudo crontab -u {USER} -e

Ejemplos de tiempo

ExpresionSignificado
* * * * *Cada minuto
*/5 * * * *Cada 5 minutos
0 * * * *Cada hora
0 2 * * *Todos los dias a las 02:00
30 3 * * 1Lunes a las 03:30
0 0 1 * *Dia 1 de cada mes

Ejemplos seguros

Ejecutar script cada 5 minutos

*/5 * * * * /usr/local/bin/{SCRIPT}.sh

Guardar stdout y stderr

*/15 * * * * /usr/local/bin/{SCRIPT}.sh >> /var/log/{SCRIPT}.log 2>&1

Ejecutar con shell explicito

0 2 * * * /bin/bash /opt/{APP}/backup.sh >> /var/log/{APP}-backup.log 2>&1

Variables de entorno

Cron no carga tu entorno interactivo completo.

Definir PATH

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Definir SHELL

SHELL=/bin/bash

Definir MAILTO vacio

MAILTO=""

Directorios de sistema

RutaUso
/etc/crontabCron global con columna de usuario
/etc/cron.d/Tareas globales separadas por archivo
/etc/cron.daily/Tareas diarias
/etc/cron.hourly/Tareas horarias

Logs y diagnostico

Debian/Ubuntu

grep CRON /var/log/syslog

systemd journal

journalctl -u cron

Ver ultimas ejecuciones

grep CRON /var/log/syslog | tail

Probar comando manualmente

/bin/bash -lc '/usr/local/bin/{SCRIPT}.sh'

Buenas practicas

  • Usa rutas absolutas.

  • Redirige salida a log.

  • Define PATH.

  • Evita comandos largos dentro del crontab.

  • Mete la logica en scripts versionados.

Variables

VariableDescripcion
{USER}Usuario propietario del cron
{SCRIPT}Script ejecutado
{APP}Nombre de app o servicio

Errores comunes

SintomaCausa probableSolucion
Funciona manual, falla en cronPATH distintoUsa rutas absolutas y define PATH
No hay salidaSin redireccion ni correoAnade >> log 2>&1
Permiso denegadoScript no ejecutablechmod +x o llama con /bin/bash
Hora inesperadaTimezone distintaRevisa timedatectl

Checklist final

  • Comando probado manualmente.

  • Rutas absolutas.

  • Logs configurados.

  • Usuario correcto.

  • Permisos del script revisados.

- EOF -