Está en la página 1de 7

MANUAL BSICO DE CRON

Qu es cron?
Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automticamente
comandos o scripts (grupos de comandos) a una hora o fecha especfica. s usado normalmente
para comandos de tareas administrati!as" como respaldos" pero puede ser usado para ejecutar
cualquier cosa. Como se define en las pginas del manual de cron (#$ man cron) es un demonio que
ejecuta programas agendados.
n prcticamente todas las distribuciones de Linux se usa la !ersi%n &ixie Cron" por la persona que
la desarroll%" que es 'aul &ixie" uno de los grandes gur(s de Unix" tambi)n creador" entre otros
sistemas" de *+,- que es uno de los ser!idores -,. ms populares del mundo.
Iniciar cron
Cron es un demonio (ser!icio)" lo que significa que solo requiere ser iniciado una !e/" generalmente
con el mismo arranque del sistema. l ser!icio de cron se llama crond. n la ma0ora de las
distribuciones el ser!icio se instala automticamente 0 queda iniciado desde el arranque del sistema"
se puede comprobar de !arias maneras1
rccron status
Usando cron
2a0 al menos dos maneras distintas de usar cron1
La primera es en el directorio /etc" donde mu0 seguramente encontrars los siguientes directorios1
cron.hourl0
cron.dail0
cron.3ee4l0
cron.monthl0
.i se coloca un archi!o tipo script en cualquiera de estos directorios" entonces el script se ejecutar
cada hora" cada da" cada semana o cada mes" dependiendo del directorio.
Colonia 567 of. 89: pagina : 333.centrolinux.com.u0
'ara que el archi!o pueda ser ejecutado tiene que ser algo similar a lo siguiente1
#!/bin/sh
#script que genera un respaldo
cd /usr/documentos
tar czf * respaldo
cp respaldo /otra_directorio/.
,%tese que la primera lnea empie/a con #;" que indica que se trata de un script shell de bash" las
dems lneas son los comandos que deseamos ejecute el script. ste script podra nombrarse por
ejemplo respaldo.sh 0 tambi)n debemos cambiarle los permisos correspondientes para que pueda
ser ejecutado" por ejemplo1
#> chmod 700 respaldo.sh
#> ls -l respaldo.sh
-r!------ " root root 0 #ul $0 0%&'0 respaldo.sh
La <x< en el grupo de permisos del propietario (r3x) indica que puede ser ejecutado.
.i este script lo dejamos en cron.hourl0" entonces se ejecutar cada hora con un minuto de todos los
das" en un momento se entender el porque.
Como segundo modo de ejecutar o usar cron es a tra!)s de manipular directamente el archi!o
/etc/crontab. n la instalaci%n por defecto de !arias distribuciones Linux" este archi!o se !er a algo
como lo siguiente1
#> cat /etc/crontab
()*++,/bin/bash
-./),/sbin&/bin&/usr/sbin&/usr/bin
0.1+/2,root
)20*,/
# run-parts
0" * * * * root run-parts /etc/cron.hourl3
0$ 4 * * * root run-parts /etc/cron.dail3
$$ 4 * * 0 root run-parts /etc/cron.ee5l3
4$ 4 " * * root run-parts /etc/cron.monthl3
Las primeras cuatro lneas son !ariables que indican lo siguiente1
SHELL es el =shell= bajo el cual se ejecuta el cron. .i no se especifica" se tomar por defecto el
Colonia 567 of. 89: pagina 7 333.centrolinux.com.u0
indicado en la lnea /etc/pass3d correspondiente al usuario que este ejecutando cron.
PAH contiene o indica la ruta a los directorios en los cuales cron buscar el comando a ejecutar.
ste path es distinto al path global del sistema o del usuario.
MAIL O es a quien se le en!a la salida del comando (si es que este tiene alguna salida). Cron
en!iar un correo a quien se especifique en este !ariable" es decir" debe ser un usuario !lido del
sistema o de alg(n otro sistema. .i no se especifica" entonces cron en!iar el correo al usuario
propietario del comando que se ejecuta.
HOME es el directorio ra/ o principal del comando cron" si no se indica entonces" la ra/ ser la
que se indique en el archi!o /etc/pass3d correspondiente al usuario que ejecuta cron.
Los comentarios se indican con # al inicio de la lnea.
-espu)s de lo anterior !ienen las lneas que ejecutan las tareas programadas propiamente. ,o ha0
lmites de cuantas tareas pueda haber" una por rengl%n. Los campos (son >) que forman estas lneas
estn formados de la siguiente manera1
0inuto )ora 6ia6el0es 0es 6ia6e+a(emana 7suario 8omando
Ca!"o Descri"ci#n
?inuto
Controla el minuto de la hora en que el comando ser ejecutado" este !alor debe de
estar entre 9 0 @6.
2ora
Controla la hora en que el comando ser ejecutado" se especifica en un formato de
7A horas" los !alores deben estar entre 9 0 78" 9 es medianoche.
-a del ?es
-a del mes en que se quiere ejecutar el comando. 'or ejemplo se indicara 79" para
ejecutar el comando el da 79 del mes.
?es
?es en que el comando se ejecutar" puede ser indicado num)ricamente (:B:7)" o
por el nombre del mes en ingl)s" solo las tres primeras letras.
-a de la
semana
-a en la semana en que se ejecutar el comando" puede ser num)rico (9B>) o por el
nombre del da en ingl)s" solo las tres primeras letras. (9 0 > C domingo)
Usuario Usuario que ejecuta el comando.
Comando
Comando" script o programa que se desea ejecutar. ste campo puede contener
m(ltiples palabras 0 espacios.
Un asterisco D como !alor en los primeros cinco campos" indicar inicioBfin del campo" es decir
todo. Un D en el campo de minuto indicar todos los minutos.
'ara entender bien esto de los primeros @ campos 0 el asterisco usar) mejor !arios ejemplos1
E$e!"%o Descri"ci#n
9: D D D D .e ejecuta al minuto : de cada hora de todos los das
Colonia 567 of. 89: pagina 8 333.centrolinux.com.u0
:@ 5 D D D E las 51:@ a.m. de cada da
:@ 79 D D D E las 51:@ p.m. de cada da
99 @ D D 9 E las @ a.m. todos los domingos
D @ D D .un Cada minuto de @199a.m. a @1@6a.m. todos los domingos
A@ :6 : D D E las >1A@ p.m. del primero de cada mes
9: D 79 > D El minuto : de cada hora del 79 de julio
:9 : D :7 : E la :1:9 a.m. todos los lunes de diciembre
99 :7 :F D
Gen
El medioda de los das :F de cada mes 0 que sea ?i)rcoles
89 6 79 > A E las 6189 a.m. del dia 79 de julio 0 que sea jue!es
89 6 79 > D E las 6189 a.m. del dia 79 de julio sin importar el da de la semana
79 D D D F El minuto 79 de cada hora de los sbados
79 D D : F El minuto 79 de cada hora de los sbados de enero
Hambi)n es posible especificar listas en los campos. Las listas pueden estar en la forma de :"7"8"A o
en la forma de :BA que sera lo mismo. Cron" de igual manera soporta incrementos en las listas" que
se indican de la siguiente manera1
9alor o lista/incremento
-e nue!o" es ms fcil entender las listas e incrementos con ejemplos1
E$e!"%o Descri"ci#n
@6 :: D :B8 :"7"8"A"@ E las ::1@6 a.m. de lunes a !iernes" de enero a mar/o
A@ D :9B7@ D FB>
El minuto A@ de todas las horas de los das :9 al 7@ de todos los meses 0
que el da sea sbado o domingo
:9"89"@9 D D D :"8"@
n el minuto :9" 89 0 @9 de todas las horas de los das lunes" mi)rcoles 0
!iernes
D/:@ :9B:A D D D Cada quince minutos de las :9199a.m. a las 7199p.m.
D :7 :B:9/7 7"5 D
Hodos los minutos de las :7 del da" en los das :"8"@"> 0 6 de febrero a
agosto. (l incremento en el tercer campo es de 7 0 comien/a a partir del
:)
9 D/@ :B:9":@"79B78 D 8
Cada @ horas de los das : al :9" el da :@ 0 del da 79 al 78 de cada mes 0
que el da sea mi)rcoles
8/8 7/A 7 7 7 Cada 8 minutos empe/ando por el minuto 8 (8"F"6" etc.) de las horas
Colonia 567 of. 89: pagina A 333.centrolinux.com.u0
7"F":9" etc (cada A horas empe/ando en la hora 7) del da 7 de febrero 0
que sea martes
Como se puede apreciar en el (ltimo ejemplo la tarea cron que estu!iera asignada a ese rengl%n con
esos datos" solo se ejecutara si se cumple con los @ campos (E,-). s decir" para que la tarea se
ejecute tiene que ser un martes 7 de febrero a las 97198. .iempre es un E,- booleano que solo
resulta !erdadero si los @ campos son ciertos en el minuto especfico.
l caso anterior deja claro entonces que1
E% "ro&ra!a cron se in'oca cada !inu(o ) e$ecu(a %as (areas *ue sus ca!"os se cu!"%an en
ese "reciso !inu(o+
+nclu0endo el campo del usuario 0 el comando" los renglones de crontab podran quedar entonces de
la siguiente manera1
0 $$ * * * root /usr/respaldodiario.sh
0 $' * * : root /usr/respaldosemanal.sh
0 ;<$0 * * * sergio mail -s =sistema funcionando= sgd>e?emplo.com
Las dos primeras lneas las ejecuta el usuario root 0 la primera ejecuta a las :9 de la noche de todos
los das el script que genera un respaldo diario. La seguna ejecuta a las :: de la noche de todos los
!iernes un script que genera un respaldo semana. La tercera lnea la ejecuta el usuario sergio 0 se
ejecutara a las 5 de la maIana 0 5 de la noche de todos los da 0 el comando es en!iar un correo a
la cuenta sgdJejemplo.com con el asunto <sistema funcionando<" una manera de que un
administrador este enterado de que un sistema remoto esta acti!o en las horas indicadas" sino recibe
un correo en esas horas" algo anda mal.
.iendo root" es posible entonces" modificar directamente crontab1
#> @i /etc/crontab
E$ecu(ando Cron con !,%(i"%es usuarios- co!ando cron(a.
Linux es un sistema multiusuario 0 cron es de las aplicaciones que soporta el trabajo con !arios
usuarios a la !e/. Cada usuario puede tener su propio archi!o crontab" de hecho el /etc/crontab se
asume que es el archi!o crontab del usuario root" aunque no ha0 problema que se inclu0an otros
usuarios" 0 de ah el sexto campo que indica precisamente quien es el usuario que ejecuta la tarea 0
es obligatorio en /etc/crontab.
'ero cuando los usuarios normales (e incluso root) desean generar su propio archi!o de crontab"
Colonia 567 of. 89: pagina @ 333.centrolinux.com.u0
entonces utili/aremos el comando crontab.
n el directorio /!ar/spool/cron (puede !ariar seg(n la distribuci%n)" se genera un archi!o cron para
cada usuario" este archi!o aunque es de texto" no debe editarse directamente.
.e tiene entonces" dos situaciones" generar directamente el archi!o crontab con el comando1
A> crontab -e
Con lo cual se abrira el editor por default (generalemente !i) con el archi!o llamado crontab !acio 0
donde el usuario ingresar su tabla de tareas 0 que se guardar automticamente como
/!ar/spool/cron/usuario.
l otro caso es que el usuario edite un archi!o de texto normal con las entradas de las tareas 0 como
ejemplo lo nombre =miKcron=" despu)s el comando L$ crontab miKcron se encargar de establecerlo
como su archi!o cron del usuario en /!ar/spool/cron/usuario1
A> @i mi_cron
# borra archi@os de carpeta compartida
0 $0 * * * rm -f /home/sergio/compartidos/*
# e?ecuta un script que realiza un respaldo de la carpeta documentos el primer
dBa de cada mes
0 $$ " * * /home/sergio/respaldomensual.sh
# cada : horas de lun a @ie< se asegura que los permisos sean los correctos en
mi home
" *: * * * "-: chmod -C D40 /home/sergio/*
&q Ese guarda el archi@oF
A> ls
mi_cron
A> crontab mi_cron
Ese establece en /@ar/spool/cron/usuarioF
Mesumiendo lo anterior 0 considerando otras opciones de crontab1
A> crontab archi@o.cron EestablecerG el archi@o.cron como el crontab del
usuarioF
A> crontab -e EabrirG el editor preestablecido donde se podrG crear o
editar el archi@o crontabF
A> crontab -l Elista el crontab actual del usuario< sus tareas de
cronF
A> crontab -r Eelimina el crontab actual del usuarioF
n algunas distribuciones cuando se editan crontabs de usuarios normales es necesario reiniciar el
ser!icio para que se puedan releer los archi!os de crontab en /!ar/spool/cron.
#> rccron restart
Colonia 567 of. 89: pagina F 333.centrolinux.com.u0
'ara entender mejor como iniciar/detener/reiniciar ser!icios" en este artculo encontrars ms
informaci%n.
Con(ro%ando e% acceso a cron
Cron permite controlar que usuarios pueden o no pueden usar los ser!icios de cron. sto se logra de
una manera mu0 sencilla a tra!)s de los siguientes archi!os1
/etc/cron.allo3
/etc/cron.den0

'ara impedir que un usuario utilice cron o mejor dicho el comando crontab" basta con agregar su
nombre de usuario al archi!o /etc/cron.den0" para permitirle su uso entonces sera agregar su
nombre de usuario en /etc/cron.allo3" si por alguna ra/%n se desea negar el uso de cron a todos los
usuarios" entonces se puede escribir la palabra ELL al inicio de cron.den0 0 con eso bastara.
#> echo .++ >>/etc/cron.den3
o para agregar un usuario mas a cron.allo
#> echo ?uan >>/etc/cron.allo
.i no existe el archi!o cron.allo3 ni el archi!o cron.den0" en teora el uso de cron esta entonces sin
restricciones de usuario. .i se aIaden nombres de usuarios en cron.allo3" sin crear un archi!o
cron.den0" tendr el mismo efecto que haberlo creado con la palabra ELL. sto quiere decir que una
!e/ creado cron.allo3 con un solo usuario" siempre se tendrn que especificar los dems usuarios
que se quiere usen cron" en este archi!o.
Colonia 567 of. 89: pagina > 333.centrolinux.com.u0

También podría gustarte