Cron ejecuta órdenes de forma recurrente sin un shell interactivo. La automatización repite tanto el comportamiento correcto como los errores, así que prueba la orden, utiliza rutas explícitas, limita los privilegios y planifica el registro y la notificación de fallos antes de programarla.
Utilización de Procesos · Lección 8
Trabajos de cron
Aprende a crear, examinar, probar y operar de forma segura trabajos recurrentes con cron.
Leer una entrada de crontab
Una entrada de crontab de usuario contiene cinco campos de tiempo seguidos de una orden:
30 8 * * * /home/pete/scripts/change_wallpaper
De izquierda a derecha, los campos son minuto, hora, día del mes, mes y día de la semana. Este ejemplo se ejecuta a las 08:30 conforme a la zona horaria aplicable al demonio cron. Un asterisco significa todos los valores permitidos de ese campo.
Cuando están restringidos tanto el día del mes como el día de la semana, muchas implementaciones de cron ejecutan la orden si cualquiera de los campos coincide. Confirma la semántica local antes de crear un horario que utilice ambos.
¿Cuándo se ejecuta 30 8 * * * command?
Gestionar un crontab de usuario
Edita el crontab del usuario actual con:
$ crontab -e
Muestra las entradas instaladas antes y después de un cambio:
$ crontab -l
crontab -r elimina todo el crontab del usuario y puede hacerlo sin abrir un editor. No lo utilices para eliminar una sola línea; edita el crontab y verifica las entradas restantes.
¿Qué orden muestra las entradas de cron instaladas para el usuario actual?
Tener en cuenta el entorno de cron
Cron suele proporcionar un entorno limitado y un shell no interactivo. Utiliza rutas absolutas para las órdenes y los archivos, establece explícitamente las variables necesarias y no dependas de alias, del directorio actual de una terminal ni de archivos de inicio del shell.
Redirige la salida estándar y los errores a un registro controlado o utiliza un mecanismo de notificación apropiado para el sistema. Protege las credenciales con permisos restrictivos y evita incrustar secretos directamente en una orden del crontab.
¿Por qué debe utilizar una orden de cron rutas y ajustes de entorno explícitos?
Probar y evitar solapamientos
Ejecuta el script manualmente como el mismo usuario y con un entorno igualmente mínimo. Haz que devuelva estados de salida útiles y escriba resultados con marcas de tiempo. Después de instalarlo, espera a un horario de prueba inofensivo o realiza una ejecución controlada y verifica el efecto real y los registros.
Si una ejecución puede durar más que su intervalo, diseña el trabajo para la concurrencia o utiliza un mecanismo de bloqueo como flock cuando esté disponible:
*/5 * * * * /usr/bin/flock -n /run/user/1000/report.lock /home/pete/bin/report
Elige una ruta de bloqueo que el usuario del trabajo pueda crear de forma segura y decide si resulta aceptable omitir ejecuciones. Cron no garantiza automáticamente que solo se ejecute una instancia.
¿Qué riesgo existe cuando un trabajo tarda más que su intervalo programado?
Elegir el planificador apropiado
Cron resulta apropiado para órdenes recurrentes sencillas. Los temporizadores de systemd pueden proporcionar integración de dependencias, recuperación persistente de ejecuciones omitidas, retrasos aleatorios y registros en el journal en equipos con systemd. Los planificadores de aplicaciones o clústeres pueden ser más seguros cuando un trabajo deba ejecutarse exactamente una vez entre varios equipos.
¿Por qué puede ser inadecuado el cron ordinario de cada equipo para un trabajo de clúster que deba ejecutarse exactamente una vez?
Lección completada
Has completado Trabajos de cron
Ahora puedes operar un trabajo recurrente de cron con supuestos explícitos sobre el horario y la ejecución.
Lee los cinco campos de tiempo en el orden definido.
Examina y edita crontabs de usuario sin eliminar trabajos ajenos.
Define rutas, entorno, registros y tratamiento de credenciales.
Prueba como el usuario del trabajo y evita solapamientos no deseados.
Elige un planificador que corresponda a los requisitos del equipo y de coordinación.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita