En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. El nombre cron viene del griego chronos que significa "tiempo".
Cron es un programa daemon que permite ejecutar otros programas o scripts en un lapso de tiempo y una periodicidad especificada por el usuario.
Su comportamiento esta regulado por su archivo de configuración, que se llama crontab. Cada usuario del sistema posee un archivo crontab personalizado y sólo el usuario root puede modificar el archivo crontab de otro usuario. Si se desea agregar un archivo crontab, es necesario entrar ("logearse" ) primero como ese usuario.
Cron es impulsado por un cron, un archivo de configuración que especifica comando shell para ejecutarse periódicamente a una hora específica. Los archivos crontab son almacenados en donde pemanecen las listas de trabajos y otras instrucciones para el demonio cron. Los usuarios habilitados para crear su fichero crontab se especifican en el fichero cron.allow. De manera análoga, los que no lo tienen permitido figuran en /etc/cron.d/cron.deny, o /etc/cron.deny, dependiendo de la versión de Unix.
Cada línea de un archivo crontab representa un trabajo y es compuesto por una expresión CRON, seguida por un comando shell para ejecutarse. Algunas implementaciones de cron, tal como en la popular BSD 4a edición escrita por Paul Vixie, e incluido en muchas distribuciones Linux, agrega una especificación de nombre de usuario dentro del formato como un sexto campo, como quién ejecutará el trabajo especificado (sujeto a la existencia de un usuario en /etc/passwd y permisos autorizados). Esto solo es permitido en el sistema crontab (/etc/crontab y /etc/cron.d/*), no en otros donde son asignados cada usuario es asignado a una configuración.
Para el "día de la semana" (campo 5), ambos 0 y 7, son considerados Domingo, a través de algunas versiones de Unix tal como AIX no toma como vàlido el "7" en el man. Mientras que cuando el trabajo es ejecutado normalmente cuando fueron especificados los campos tiempo/fecha, todos coinciden con la hora y fecha actual, esto es una excepción.
Si tanto el "día del mes" como "día de la semana" son restringidos (no son " * " ), entonces o el "día del mes" (campo 3) o el "día de la semana" (campo 5) debe coincidir con el día actual.
Un usuario sólo puede hacer uso de crontab si su nombre aparece en:
Si este archivo no existe, el usuario puede usar crontab a menos que su nombre aparezca en:
La sintaxis del archivo crontab es muy clara y rígida. Hay seis campos por cada linea, y cada campo está separado por un espacio. Los primeros cinco campos específican el momento preciso de ejecución, mientras que el sexto campo es el propio comando o script que se ejecutará. Los primeros cinco campos son:
# m h dom mon dow /commando/a/ejecutar
- - - - - -
| | | | | |
| | | | | +----- día de la semana (0 - 6) (dom = 0)
| | | | +------- mes (1 - 12)
| | | +--------- día del mes (1 - 31)
| | +----------- hora (0 - 23)
| +------------- minuto (0 - 59)
+---------------- espacio vacío (no poner nada)
El asterisco * en alguno de los campos se entenderá como todos los valores posibles. Por lo tango, un * en el campo mes se entenderá como que el comando se ejecuta todos los meses en el momento indicado en el resto de los campos.
sudo service cron status
Debera aparecernos algo como esto:
cron start/running, process 1195
Pogramar el apagado del sistema el 15 de diciembre a las 3:00 PM
0 15 15 12 * root /sbin/shutdown
Programar la ejecución de un script 4 de febrero a las 7:15 AM
Más opciones del comando cron:
Cron es un programa daemon que permite ejecutar otros programas o scripts en un lapso de tiempo y una periodicidad especificada por el usuario.
Su comportamiento esta regulado por su archivo de configuración, que se llama crontab. Cada usuario del sistema posee un archivo crontab personalizado y sólo el usuario root puede modificar el archivo crontab de otro usuario. Si se desea agregar un archivo crontab, es necesario entrar ("logearse" ) primero como ese usuario.
Cron es impulsado por un cron, un archivo de configuración que especifica comando shell para ejecutarse periódicamente a una hora específica. Los archivos crontab son almacenados en donde pemanecen las listas de trabajos y otras instrucciones para el demonio cron. Los usuarios habilitados para crear su fichero crontab se especifican en el fichero cron.allow. De manera análoga, los que no lo tienen permitido figuran en /etc/cron.d/cron.deny, o /etc/cron.deny, dependiendo de la versión de Unix.
Cada línea de un archivo crontab representa un trabajo y es compuesto por una expresión CRON, seguida por un comando shell para ejecutarse. Algunas implementaciones de cron, tal como en la popular BSD 4a edición escrita por Paul Vixie, e incluido en muchas distribuciones Linux, agrega una especificación de nombre de usuario dentro del formato como un sexto campo, como quién ejecutará el trabajo especificado (sujeto a la existencia de un usuario en /etc/passwd y permisos autorizados). Esto solo es permitido en el sistema crontab (/etc/crontab y /etc/cron.d/*), no en otros donde son asignados cada usuario es asignado a una configuración.
Si tanto el "día del mes" como "día de la semana" son restringidos (no son " * " ), entonces o el "día del mes" (campo 3) o el "día de la semana" (campo 5) debe coincidir con el día actual.
Un usuario sólo puede hacer uso de crontab si su nombre aparece en:
/etc/cron.allow
Si este archivo no existe, el usuario puede usar crontab a menos que su nombre aparezca en:
/etc/cron.deny.
La sintaxis del archivo crontab es muy clara y rígida. Hay seis campos por cada linea, y cada campo está separado por un espacio. Los primeros cinco campos específican el momento preciso de ejecución, mientras que el sexto campo es el propio comando o script que se ejecutará. Los primeros cinco campos son:
# m h dom mon dow /commando/a/ejecutar
- - - - - -
| | | | | |
| | | | | +----- día de la semana (0 - 6) (dom = 0)
| | | | +------- mes (1 - 12)
| | | +--------- día del mes (1 - 31)
| | +----------- hora (0 - 23)
| +------------- minuto (0 - 59)
+---------------- espacio vacío (no poner nada)
El asterisco * en alguno de los campos se entenderá como todos los valores posibles. Por lo tango, un * en el campo mes se entenderá como que el comando se ejecuta todos los meses en el momento indicado en el resto de los campos.
sudo service cron status
Debera aparecernos algo como esto:
cron start/running, process 1195
Pogramar el apagado del sistema el 15 de diciembre a las 3:00 PM
sudo vi /etc/crontab
0 15 15 12 * root /sbin/shutdown
Programar la ejecución de un script 4 de febrero a las 7:15 AM
sudo vi /etc/crontab 15 7 4 2 * root /home/usuario/script.sh
Más opciones del comando cron:
man cron crontab
Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:
El Mundo de Ubuntu en las Redes Sociales
Espero que esta publicación te haya gustado. Si tienes alguna duda, consulta o quieras complementar este post, no dudes en escribir en la zona de comentarios. También puedes visitar Facebook, Twitter, Google +, Linkedin, Instagram, Pinterest, restantes Redes Sociales y Feedly donde encontrarás información complementaria a este blog. COMPARTE EN!