Foros del Web » Administración de Sistemas » Unix / Linux »

Problemas programando tareas con "cron"

Estas en el tema de Problemas programando tareas con "cron" en el foro de Unix / Linux en Foros del Web. Hola, Estoy intentando programar tareas automáticas con "cron"; En concreto quiero que todas las noches se ejecute "updatedb" a las 03:00 de la mañana. Para ...
  #1 (permalink)  
Antiguo 08/05/2005, 08:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 114
Antigüedad: 19 años, 8 meses
Puntos: 0
Problemas programando tareas con "cron"

Hola,

Estoy intentando programar tareas automáticas con "cron"; En concreto quiero que todas las noches se ejecute "updatedb" a las 03:00 de la mañana. Para ello añado la siguiente linea al fichero /etc/crontab:

Cita:
0 3 * * * /usr/bin/updatedb
Reinicio cron de la siguiente manera:

Cita:
# /etc/init.d/crond restart
He probado varias veces y no funciona.. ¿Por que puede ser? Utilizo Fedora Core 3.

Por otra parte, he probado a añadir una tarea en el crontab de root, para ello hago un "crontab -e" y añado la misma linea, así si me funciona. Pero de esta forma no me envia los emails que me debería mandar una vez finalizada la ejecución del script.

Otra pregunta: las tareas que están en /etc/crontab, ¿Qué usuario las ejecuta? ¿root, nobody?¨

Saludos y mucha gracias!
  #2 (permalink)  
Antiguo 08/05/2005, 15:12
Avatar de amartinez  
Fecha de Ingreso: junio-2004
Mensajes: 435
Antigüedad: 20 años, 5 meses
Puntos: 2
Hi:
Primera Pregunta:
Igual --> ¿Por el tema de permisos? ¿ese usuario con el que creas la tarea?,¿tiene permisos de ejecución de ese archivo?
Segunda Pregunta:
No se, pero si tendría que apostar, diria, .... que el usuario que la añade con crontab -e, siempre que este usuario tenga permiso de ejecución sobre el archivo, script a ejectuar

**** ¿para que sirve updatedb? 100kiu
  #3 (permalink)  
Antiguo 08/05/2005, 16:22
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 3 meses
Puntos: 29
Con el usuario que ejecutas updatedb ejecuta la instruccion desde el prompt, mejor dicho desde la consola, y si tienes todo perfecto entonces a lo mejor es un problema de sintaxis en la estructura del crontab, ya que el crontab tiene ciertas estructuras de ejecucion como el shell con el que se ejecuta por defecto pero esto no debería ser problema.

Consulta la documentacion de crontab por si acaso se te ha pasdo algo por alto.

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #4 (permalink)  
Antiguo 08/05/2005, 16:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 114
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola,

Gracias a los dos por responder, os comento por partes.

1) updatedb actualiza la base de datos para buscar despues con el comando "locate". La finalidad del comando es lo de menos, el caso es que no llega a ejecutarse.

2) He supuesto que el usuario que ejecuta el contenido de /etc/crontab era "root". Al ser root, supongo que no habrá problemas de permisos. Llevo ejecutando ese comando desde la shell mucho tiempo sin problemas..

3) amartinez, no entiendo muy bien cuando hablas de "crontab -e", por favor explicate mejor

4) Como acabo de comentar, no es problemas de permisos, copio aquí la literalmente el contenido de mi /etc/crontab:

Cita:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

0 3 * * * /usr/bin/updatedb

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
La documentanción de crontab ya la tengo mirado, pero me temo que se me está escapando algún pequeño detalle..

Saludos y muchas gracias.
  #5 (permalink)  
Antiguo 08/05/2005, 16:42
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 3 meses
Puntos: 29
¿Tienes otras tareas asiganadas aparte de actualizar la base de datos? Con crontab -e lo que haces es abrir el archivo crontab donde se ejecutará la instrucción que le des así solamente tienes que agregar la línea de comando que necesites que se ejecute. Me parece que es la manera mas facil de editar el arcchivo del crontab.

Te dejo este link para que continues con tu investigación Link

saludos y continua con eso
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #6 (permalink)  
Antiguo 09/05/2005, 04:19
Avatar de drulic
Usuario baneado!
 
Fecha de Ingreso: abril-2005
Mensajes: 174
Antigüedad: 19 años, 7 meses
Puntos: 0
El único problema que tienes es que el updatedb tiene que ser ejecutado como root, una posible solución es ésta:

1. edita el fichero /etc/sudoers y añade tu usuario debajo de root, con copiar la linea y poner tu usuario será suficiente.
2. después añade en el cron ésto:

0 3 * * * sudo /usr/bin/updatedb

Esto te debería funcionar.

Salu2.
  #7 (permalink)  
Antiguo 09/05/2005, 06:37
Avatar de amartinez  
Fecha de Ingreso: junio-2004
Mensajes: 435
Antigüedad: 20 años, 5 meses
Puntos: 2
Hi:

En mi mephis sin tocar nada, ¿creo? ya que es la primera vez que oigo de ese comando updatedb, tiene por defecto estos permisos:

rwxr-xr-x 1 root root 5980 2004-06-29 08:14 updatedb

Pero si ejecuto el comando /usr/bin/updatedb con un usuario diferente a root puedo ejecutarlo pero creo que no hace nada ya que me da esto :

......
/usr/bin/find: /lost+found: Permiso denegado
/usr/bin/updatedb: line 142: /var/cache/locate/locatedb.n: Permiso denegado
/usr/bin/find: /home/lost+found: Permiso denegado
/usr/bin/find: /home/practicas/.kde/share/apps/kconf_update: Permiso denegado
/usr/bin/find: /home/practicas/.kde/share/apps/nsplugins: Permiso denegado
/usr/bin/find: /root/.gconfd: Permiso denegado
/usr/bin/find: /root/.gnome: Permiso denegado
.......


Como root si ejecuto en la consola /usr/bin/updatedb no me da ningún error y supongo que se habrá acualizado la base de datos
  #8 (permalink)  
Antiguo 09/05/2005, 08:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 114
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola,

Creo que algo estoy haciendo mal, tampoco me funciona este simple comando. Os copio el contenido de /etc/crontab:

Cita:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

01 * * * * /bin/touch /tmp/pruebas-crond.txt
Quería hacer esa prueba para saber con que usuario se ejecuta el contenido de /etc/crontab.. y luego seguir investigando porque no llega a ejecutarse el "updatedb". ¿Quien ejecuta las tareas de /etc/crontab?

drulic, mas adelante probaré lo de sudo.

Saludos
  #9 (permalink)  
Antiguo 09/05/2005, 08:40
Avatar de drulic
Usuario baneado!
 
Fecha de Ingreso: abril-2005
Mensajes: 174
Antigüedad: 19 años, 7 meses
Puntos: 0
como dijo jack el estrangulador, vamos por partes...

cada usuario que tenga acceso al sistema tiene posibilidad de ejecutar su propio cron (salvo que se indique lo contrario), es decir, el root tiene su cron, pepito el suyo, y manganito el suyo también.

updatedb se tiene que ejecutar como root, el locate lo puedes hacer con cualquier usuario, pero restablecer la base de datos no, si quieres que el updatedb se ejecute como un usuario normal tienes que hacer lo que te he puesto más arriba.

Salu2.
  #10 (permalink)  
Antiguo 09/05/2005, 09:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 114
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola drulic,

Gracias por contestar. Ahora mismo estoy ejecutando "updatedb" vía el cron de root, "/var/spool/cron/root".

Hasta aqui todo bien, la duda es por que no se llega a ejecutarse el contenido de /etc/crontab.

Tambien he probado con:

01 * * * * root /bin/touch /tmp/pruebas-crond.txt

Es decir añadir el nombre del usuario, siguiendo el ejemplo, y nada.. :(

¿Por que no se ejecuta ese simple "touch" del crontab? Cada vez que hago un cambio lo reinicio con /etc/init.d/crond restart, pero no funciona..

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:56.