0% encontró este documento útil (0 votos)
213 vistas8 páginas

Guía completa sobre Cron y Crontab

Este documento explica cron y crontab, que permiten programar tareas y procesos para que se ejecuten automáticamente en Linux. Cron es un demonio que ejecuta procesos en segundo plano según una programación especificada en el archivo crontab. Crontab es el archivo de texto donde se especifican los comandos y la hora en que deben ejecutarse. El documento detalla cómo funciona cron, cómo editar y administrar crontab, y los conceptos básicos sobre su configuración y uso.

Cargado por

amgspain78
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
213 vistas8 páginas

Guía completa sobre Cron y Crontab

Este documento explica cron y crontab, que permiten programar tareas y procesos para que se ejecuten automáticamente en Linux. Cron es un demonio que ejecuta procesos en segundo plano según una programación especificada en el archivo crontab. Crontab es el archivo de texto donde se especifican los comandos y la hora en que deben ejecutarse. El documento detalla cómo funciona cron, cómo editar y administrar crontab, y los conceptos básicos sobre su configuración y uso.

Cargado por

amgspain78
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Cron & crontab, explicados

Lucain public hace ya un tiempo un excelente tutorial sobre cron y


crontab que me parece vale la pena compartir. Cron es una suerte de
equivalente a Tareas Programadas en Windows, slo que se maneja
desde el terminal. Aquellos que prefieran una interfaz visual para lograr
el mismo objetivo, pueden ver este otro artculo.
Qu es cron
El nombre cron viene del griego chronos que significa tiempo!. En el sistema
operativo "ni#, cron es un administrador regular de procesos en segundo plano
$demonio% que ejecuta procesos o guiones a intervalos regulares programados $por
ejemplo, cada minuto, da, semana o mes%. Los procesos que deben ejecutarse y la hora
en la que deben hacerlo se especifican en el fichero crontab.
C!mo "unciona
&ron se ejecuta en el bac'ground, revisa cada minuto la tabla de tareas crontab
/etc/crontab o en /var/spool/cron en b(squeda de tareas que se deban cumplir. &omo
usuario podemos agregar comandos o scripts con tareas a cron para automatizar algunos
procesos. Esto es (til por ejemplo para automatizar la actualizacin de un sistema o un
buen sistema de respaldos.
Los procesos que deben ejecutarse y el momento en que debe hacerse se especifican en
el archivo crontab correspondiente.
#niciar el cron
&ron es un demonio $servicio%, lo que significa que slo requiere ser iniciado una vez,
generalmente en el momento de arranque del sistema. El servicio de cron se llama cron
aunque en algunas distribuciones se denomina crond$ En la mayora de las
distribuciones, el servicio se instala autom)ticamente y queda iniciado desde el arranque
del sistema.
Antes de programar tareas hay que comprobar que el servicio cron se encuentra en
ejecucin. Esto se puede llevar a cabo de diversas formas. El modo m)s apropiado es
mediante el comando*
+ service cron status
Aunque tambi,n se puede comprobar mediante el comando ps.
Qu es Crontab
&rontab es un simple archivo de te#to que guarda una lista de comandos a ejecutar en
un tiempo especificado por el usuario. &rontab verificar) la fecha y hora en que se debe
ejecutar el script o el comando, los permisos de ejecucin y lo realizar) en el
bac'ground. &ada usuario puede tener su propio archivo crontab, de hecho el
1
/etc/crontab se asume que es el archivo crontab del usuario root, cuando los usuarios
normales $e incluso root% desean generar su propio archivo de crontab, entonces
utilizaremos el comando crontab.
&rontab es la manera m)s sencilla de administrar tareas de cron en sistemas
multiusuario, ya sea como simple usuario de sistema o usuario root.
El fichero crontab del root se guarda en -var-spool-cron-crontabs-root, pero nunca se
editan los ficheros de cron directamente, sino que debemos ejecutar el siguiente
comando*
. crontab /e
0e utiliza siempre esta orden en lugar de modificar el fichero directamente con un editor
de te#to, ya que as se garantiza que el fichero se est) ejecutando en e#clusiva, con lo
que se evitan problemas de concurrencia con otros administradores.
En caso de que no e#ista una entrada para el usuario, se informa del hecho y se pide la
creacin de un crontab nuevo mediante un editor a elegir*
En algunas ocasiones, e#iste un fichero por defecto con la siguiente lnea de cabeceras*
. m h dom mon do1 command
2icha lnea sirve (nicamente de guin para escribir debajo de ella las tareas. &omo se
observa, indica el formado del fichero
. minutos horas da3del3mes mes da3semana comando3a 3ejecutar
4o obstante se deber)n a5adir algunas lneas al principio, indicando las variables de
entorno de inter,s tal como aparecen a continuacin.
2
%ariables de crontab
Variable Descripcin
SHELL
Indica la shell bajo la cual se ejecuta el cron. Si no se
especifca, se tomar por defecto el indicado en la
lnea correspondiente al usuario ue est ejecutando
cron.
!"#H
$ontiene o indica la ruta a los directorios en los cuales
cron buscar el comando a ejecutar. Este path es
distinto al path %lobal del sistema o del usuario
&"IL#'
Indica a ui(n se en)iar la salida del comando *en
caso de ue el comando produ+ca al%una salida, o
bien notifcaciones en el caso de ue al%o )a-a mal a
la hora de ejecutar al%una de las tareas. $ron en)iar
un correo a uien se especifue en esta )ariable, -a
sea una direcci.n de correo electr.nico o un nombre
de usuario.
H'&E
Es el directorio ra+ o principal del comando cron. Si
no se especifca, la ra+ ser la ue se indiue en el
archi)o correspondiente al usuario ue ejecuta cron
La sinta#is del archivo crontab es muy clara y rgida. 6ay seis campos por cada lnea, y
cada campo est) separado por un espacio. Los primeros cinco campos especifican el
momento preciso de ejecucin, mientras que el se#to campo es el propio comando o
script que se ejecutar). Los primeros cinco campos son*
# m h dom mon dow /commando/a/ejecutar
- - - - - -
| | | | | |
| | | | | +----- da de la semana (0 - 6) (dom =
0)
| | | | +------- mes (1 - 12)
| | | +--------- da del mes (1 - 31)
| | +----------- hora (0 - 23)
| +------------- minuto (0 - !)
+---------------- es"acio #aco (no "oner nada)
Crontab del sistema
El archivo de cron del sistema es -etc-crontab. 0i se indican tareas en ,l, se
ejecutan, pero no es una pr)ctica recomendable. Este crontab se deja para que
lo maneje la distribucin y sus programas.
Es igual que el crontab del usuario, salvo que en este caso se puede especificar
con qu, usuario se ejecuta cada tarea, para lo cual cron realiza una
suplantacin de identidad previa a la ejecucin.
"n fichero -etc-crontab tpico puede ser*
/
7bserve que a los campos vistos en crontab del root se ha a5adido uno nuevo
para indicar el usuario que ejecuta las tareas, siendo en este caso el root.
&istando el crontab
8ara obtener el listado de las tareas programadas del crontab, debemos utilizar
el siguiente comando*
+ crontab /l
Esto muestra el crontab del usuario actual. 0i deseamos conocer las tareas
programadas de otro usuario, debemos utilizar la opcin /u
. crontab /u nombre3usuario /l
'liminando tareas de crontab
8ara suprimir todas las tareas el crontab del usuario actual, debe utilizar el
comando*
+ crontab /r
9 si lo que desea es borrar todas las tareas de un usuario especfico, se
utilizar)*
. crontab /r /u nombre3usuario
(peradores
:ediante la utilizacin de operadores es posible especificar m(ltiples valores
en un campo. Los operadores disponibles son los siguientes*
0
Operador Descripcin
1
Este operador abarca todos los )alores posibles en un
campo. !or ejemplo, un asterisco en el campo de la
hora ser eui)alente a cada hora.
,
El operador coma se utili+a para especifcar una lista
de )alores.
!or ejemplo
21,3,14,135
.
El operador %ui.n se utili+a para especifcar una serie
de )alores.
!or ejemplo, el )alor 236145 eui)ale a escribir
23,7,8,9,:,145 usando el )alor coma
;alor o
lista<increment
o
Se aplica un incremento al )alor o lista de )alores.
!or ejemplo, el )alor 21<135 en el campo de los
minutos eui)ale a su ejecuci.n en inter)alos de 13
minutos.
Adem)s de indicar el instante de tiempo en el que se ejecuta una tarea,
tambi,n es posible utilizar momentos predefinidos
Cadena Descripcin
=reboot Se ejecuta una )e+ en el reinicio.
=-earl- Se ejecuta una )e+ al a>o. Eui)ale a 24 4 1 115.
=annuall- #iene la misma funcionalidad ue =-earl-.
=monthl- Se ejecuta una )e+ al mes. Eui)ale a 24 4 1 1 15.
=?ee@l-
Se ejecuta una )e+ a la semana. Eui)ale a 24 4 1 1
45.
=dail- Se ejecuta una )e+ al da. Eui)ale a 24 4 1 1 15.
=midni%ht #iene la misma funcionalidad ue =dail-.
=hourl- Se ejecuta cada hora. Eui)ale a 24 1 1 1 15.
)irectorios prede"inidos
En los sistemas ;4"-Linu# e#isten unos directorios predefinidos para que los
lea y ejecute su contenido en los intervalos que indican sus nombres.
Adicionalmente cron lee los archivos del directorio -etc-cron.d ya que por lo
general distintos demonios colocan sus trabajos aqu.
3
Directorio Descripcin
<etc<cron.hourl- Se ejecuta cada hora
<etc<cron.dail- Se ejecuta una )e+ al da.
<etc<cron.?ee@l- Se ejecuta una )e+ a la semana
<etc<cron.monthl- Se ejecuta una )e+ al mes
2ichos directorios se suelen utilizar para enlazar scripts que se ejecutan en el
intervalo correspondiente, indicando en el nombre del directorio, sin
argumentos. 8or ejemplo, si crea un script, lo guarda en el directorio -root-bin
y se enlaza con -etc-cron.hourly, cron lo ejecuta cada hora*
+ chmod u<# -root-bin-script.sh
+ ln /s -root-bin.script.sh -etc-cron.hourly-
Control de acceso a cron
En ;4" Linu# podremos indicar qu, usuarios podr)n ejecutar tareas programadas en el
cron y qu, usuarios no podr)n hacerlo. 8ara indicar los usuarios que no podr)n utilizar
el cron los a5adiremos en el fichero*
/etc/cron.d/cron.deny
0i no e#iste el fichero podremos crearlo con =nano= =vi= o cualquier editor de te#to
plano, con el comando*
nano /etc/cron.d/cron.deny
A5adiremos los nombres de los usuarios que 47 podr)n utilizar el &ron $tareas
programadas de ;4" Linu#%, uno por cada lnea.
8ara indicar los usuarios que s podr)n utilizar el cron los a5adiremos al fichero*
/etc/cron.d/cron.allow
2e la misma forma que para el fichero cron.deny.
&og de cron
En la distribucin "buntu el log de cron viene activado por defecto y toda su actividad
queda registrada en el fichero -var-log-syslog
7
2eshabilitar el envo de e>mails
8or defecto la salida del comando o script se enva por correo electrnico a la bandeja
del usuario. 8ara dejar de escribir e>mails de salida del crontab, debe aplicar un
redireccionamiento en el mismo final de la lnea de programacin de la tarea*
?-dev-null @?AB
#nstalar crontab desde un arc*ivo
0i no queremos editar directamente el fichero crontab, puede a5adir todas las entradas
en un fichero normal previamente y a5adirlas con posterioridad al fichero crontab
mediante el siguiente comando*
+ crontab fichero
Esto inserta las entradas del fichero en crontab, eliminando las entradas antiguas del
mismo, por lo que se debe tener cuidado al utilizar este modo de trabajo.
8ara que quedara claro, unos cuantos ejemplos de tareas de cron e#plicados*
1 10 $ $ $ usuario /home/usuario/scri"ts/actuali%ar&sh
Ejecutar) el script actualizar.sh a las BC*BD a.m. todos los das
1 22 $ $ $ usuario /home/usuario/scri"ts/actuali%ar&sh
Ejecutar) el script actualizar.sh a las BC*BD p.m. todos los das
00 10 $ $ 0 root a"t-'et -( u"date )suario root
Ejecutar) una actualizacin todos los domingos a las BC*CC a.m
* 10 $ $ sun root a"t-'et -( u"date
"suario root ejecutar) una actualizacin todos los domingos $sun% a las BC*ED a.m
30 + 20 11 $ usuario /home/usuario/scri"ts/actuali%ar&sh
El da @C de noviembre a las F*GC el usuario correr) el script
30 + 11 11 sun usuario /home/usuario/scri"ts/"astel,con,#elitas&sh
El da BB de noviembre a las F*GC a.m. y que sea domingo, el usuario festejar) su
sysadmin $o sea a m%
01 $ $ $ $ usuario /home/usuario/scri"ts/molestorecordatorio&sh
"n molesto recordatorio cada minuto de cada hora todos los das $47 recomendable%.
8
Hgual se pueden manejar rangos especiales+
30 1+ $ $ 1-2-3-*-
A las D*GC de la tarde todos los das de lunes a viernes.
00 12 1-1-2. $ $
A las B@ del da todos los das primero, quince y @I de cada mes $ideal para nminas%
9

También podría gustarte