Cron es un programador de trabajos basado en el tiempo, está configurado para ejecutar comandos en momentos o intervalos determinados. Cada usuario tiene una tabla cron que define qué ejecutar y en qué intervalo. crontab El comando se usa para crear, modificar y ver trabajos cron.
Archivos y directorios de configuración
– Cron está controlado por un conjunto de archivos llamados crontabs.
– El archivo maestro está en /etc/crontab , junto con archivos crontab para los usuarios en /var/spool/cron/ . En el último directorio, los archivos reciben el mismo nombre que el nombre de usuario de un usuario.
– El archivo /etc/crontab ejecuta automáticamente elementos en varios subdirectorios en períodos regulares. Los scripts se ubican en varios directorios:/etc/cron.* se ejecutan según el intervalo de tiempo que se indica a continuación. Todos los scripts en estos directorios se ejecutan con el privilegio de root.
Directorio | Tiempo |
---|---|
/etc/cron.horaria | Primer minuto de cada hora |
/etc/cron.daily | Entre las 3:05 a. m. y las 10:55 p. m. todos los días |
/etc/cron.weekly | Entre las 3:25 AM y las 11:10 PM después de 7 días desde la última ejecución |
/etc/cron.monthly | Entre las 3:45 a. m. y las 11:30 p. m. después de un mes desde la última ejecución |
– Todo lo que el administrador del sistema debe hacer es colocar un script de shell o un enlace a un ejecutable en uno de los directorios y se ejecutará automáticamente en el momento apropiado.
sintaxis crontab
Configurar un crontab a nivel de usuario es algo diferente. Los archivos en /var/spool/cron no se editan directamente. En su lugar, se utiliza un programa llamado crontab para manipularlos. La sintaxis del comando crontab es:
Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u [user] define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n [host] set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x [mask] enable debugging
Cómo editar un crontab
La mejor manera de editar un crontab es usando el comando crontab -e . Otra forma de hacerlo es:
1. su to the user whose cron you want to change 2. crontab -l > file [ copy the crontab to a file ]. 3. vi file [ make changes to the file as per your need ] 4. crontab file [ this makes the "file" as new crontab ]
No hay necesidad de reiniciar el demonio cron después de esto.
Interpretación de los campos de fecha y hora
Cada comando cron tiene 5 campos de hora y fecha, seguidos de un nombre de usuario [opcional], y si este es el archivo crontab del sistema, estará seguido de un comando. Los comandos se ejecutan cuando la hora especificada por los campos de hora/fecha coincide con la hora actual.
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 0-31 month 0-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
Un campo puede ser un asterisco (*), que siempre representa del primero al último . Entonces, cuando se usa en el campo del mes, significa todos los meses desde el 0 (enero) hasta el 12 (diciembre).
Ejemplo de trabajo cron:
# Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | 0 1 * * * [user-name] [command to be executed]
Ejemplos de configuración de trabajos cron
A continuación se muestran algunos ejemplos de usos de crontab para comprender cómo programar una tarea:
Ejemplo: ejecutando un trabajo cinco minutos después de la medianoche, todos los días:
5 0 * * * /home/oracle/scan_asm_devices.sh
Ejemplo: ejecutando un trabajo a las 5:30 p. m. el día 1 de cada mes:
30 17 1 * * mail -s "It's 5:30pm"
Ejemplo: Ejecutar un trabajo a las 4:05 todos los lunes.
5 4 * * mon echo "run at 5 after 4 every monday"
Control de acceso de usuarios
– Para permitir que los usuarios accedan a los crontabs, se pueden usar los archivos /etc/cron.allow y /etc/cron.deny para permitir o denegar el acceso respectivamente. Simplemente coloque un nombre de usuario en cualquiera de los 2 archivos para permitir o denegar el acceso a crontab.
– Si existe el archivo /etc/cron.allow, entonces no se utilizará el archivo /etc/cron.deny.
– En la instalación predeterminada, solo existirá un archivo vacío /etc/cron.deny.
– Si ninguno de los archivos existe, solo el usuario root tendrá acceso para programar un trabajo a través de cron.