Linux en Espanol
 
ejecutar dbexport mediante crontab??? (tema #24941)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Servidores y Servicios
Autor Mensaje
riverito
Forista
Registrado: 2014-02-23
Mensajes: 5

Publicado: 2014-02-23 15:28:00    Asunto: ejecutar dbexport mediante crontab???

Hola, estoy intentando hacer un respaldo automatico de una base de datos que se encuentra en informix, en el sistema opetativo OpenSUSE 12.1.
Para eso intent? hacer un script y lo ejecuto con el crontab.

El problema que no hay forma de que haga el dbexport a travez del crontab.

El script era medio largo pero lo fui simplificando para ver cual era el problema y llegue a esto:
/prueba.sh:
[code:1:26b08a4e40]dbexport -d base -o /respaldo[/code:1:26b08a4e40]

Si lo ejecuto desde la consola con "sh /prueba.sh", me lo ejecuta y me hace el dbexport perfectamente.

Ahora si lo ejecuto desde el crontab escribiendo "crontab -e"
y agregando la siguiente linea:

[code:1:26b08a4e40]25 15 * * * sh /prueba.sh[/code:1:26b08a4e40]

(la hora la voy modificando a unos minutos despues de la hora actual para ir probando)

No hace exactamente nada, no exporta la base de datos. La carpeta base.exp no aparece.

He probado meter distintos comandos dentro del prueba.sh y me los ejecuta todos perfectamente mediente el crontab, pero si quiero hacer un dbexport no lo hace.

Ya me estoy volviendo loco, hace 1 semana que estoy intentando no encuentro cual puede ser el problema.

Gracias de antemano.
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2014-02-24 01:57:54    Asunto:

Hola.

Normalmente cuando crontab ejecuta las cosas de modo diferente a la ejecuci?n manual por consola el problema es de variables de entorno.
Puede incluso que tengas un $PATH diferente y no te est? encontrando el comando dbexport.
Prueba lo primero a modificar tu script poniendo la ruta completa de dbexport, por ejemplo /opt/db2/bin/dbexport o la que sea.
Si no sabes d?nde est? dbexport ejecuta en consola whereis dbexport y te lo dir?.
Si con eso no obtienes mejor?a alguna, prueba a hacer desde consola set > fichero_temporal y carga el contenido de fichero_temporal en el arranque de tu script.

Saludos.
riverito
Forista
Registrado: 2014-02-23
Mensajes: 5

Publicado: 2014-02-25 04:05:05    Asunto:

Hola, gracias por responder.

Si hago el whereis dbexport me sale solo "dbexport: ".
[img:9b8de5a71d]http://i.imgur.com/zSa5EfF.png[/img:9b8de5a71d]

Busqu? manualmente adentro de la carpeta donde se instalo informix y encontre un archivo llamado dbexport dentro de /opt/IBM/informix/bin
supongo que ser? ese
[img:9b8de5a71d]http://i.imgur.com/M3f0WOz.png[/img:9b8de5a71d]

En el script use
[code:1:9b8de5a71d]/opt/IBM/informix/bin/dbexport -d itnetuybiblos -o /respaldo[/code:1:9b8de5a71d]

Nuevamente si lo ejecuto desde consola con . /prueba.sh funciona, pero al ejecutarlo desde el crontab no hace absolutamente nada.

Hice el "set > fichero_temporal", me crea ese archivo con unas casi 2000 lineas, copie esas lineas y las pegue al principio de mi script (no se si era eso a lo que te referias con cargarlo), pero sigue pasando lo mismo, desde el crontab no hace el dbexport.


No s? si sirve de algo, pero si escribo $PATH en la consola me sale esto:

[code:1:9b8de5a71d]bash: /usr/lib/mpi/gcc/openmpi/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/jvm/jre/bin:/opt/IBM/informix/bin:/opt/IBM/informix/extend/krakatoa/jre/bin: No such file or directory[/code:1:9b8de5a71d]
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2014-02-25 23:59:45    Asunto:

Hola.

Por cargarlo s? me refer?a a eso, aunque m?s f?cil es tras hacer [code:1:0426c0cac8]set > ~/fichero_temporal[/code:1:0426c0cac8]Hacer esto como primera l?nea de tu script:
[code:1:0426c0cac8]. ~/fichero_temporal[/code:1:0426c0cac8]
Para ampliar la b?squeda del problema, modifica tu script y a?ade antes del dbexport esto:
[code:1:0426c0cac8]echo empezando $(date) >> ~/log_ejecucion[/code:1:0426c0cac8]
Y despu?s del dbexport, esto:
[code:1:0426c0cac8]echo acabando $(date) >> ~/log_ejecucion[/code:1:0426c0cac8]
Con esto conseguimos separar si el problema es de ejecuci?n de la orden dbexport o simplemente el crontab no est? ejecutando nada. Si el comando se ejecuta, en tu "home" se crear? un fichero de texto llamado log_ejecuci?n que tendr? una l?nea con la fecha y hora de inicio y otra con la de fin.
Prueba desde consola y luego desde crontab. Cada vez que lo ejecutes debe a?adir dos l?neas sin borrar las anteriores.
Si no funciona, el problema no es de poder o no ejecutar dbexport, sino que es del propio crontab.
Si funciona, prueba de nuevo, pero cambia ~/log_ejecucion por /log_ejecucion (sin ~). Con esto pruebas si es un problema de permisos sobre "/"
Y con los resultados obtenidos postea de nuevo.

Por cierto, ?hay otras cosas funcionando correctamente con crontab en esa m?quina?

Saludos.
riverito
Forista
Registrado: 2014-02-23
Mensajes: 5

Publicado: 2014-02-26 02:33:50    Asunto:

Probe lo que me dijiste.

Sin el crontab:
[quote:94421fc13b]empezando Wed Feb 26 00:17:50 UYST 2014
acabando Wed Feb 26 00:17:51 UYST 2014
[/quote:94421fc13b]

Con el crontab lo mismo:
[quote:94421fc13b]empezando Wed Feb 26 00:20:01 UYST 2014
acabando Wed Feb 26 00:20:01 UYST 2014[/quote:94421fc13b]

Si lo ejecuto sin el ~ igualmente, me crea el archivo en la ra?z y me agrega las dos lineas.

He probado otros comandos en el crontab para verificar que este funcionando, como crear carpetas, copiar archivos, etc.. los hace todos perfectamente y a la hora indicada, lo unico que no ejecuta es el dbexport.

tambien prob? copiando las rutas que aparecen con el comando "echo $PATH" y pegandolas en el archivo /etc/crontab en la parte que dice "PATH=" pero sigue sin funcionar.
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2014-02-26 15:07:31    Asunto:

Hola.

Tus ?ltimas pruebas descartan un problema de crontab. Estamos ante un problema de dbexport propiamente o del entorno.

?Puedes a?adir en la l?nea de tu script una redirecci?n de la salida a alg?n fichero de log? Es decir, cambia[code:1:7bc366e558]/opt/IBM/informix/bin/dbexport -d itnetuybiblos -o /respaldo[/code:1:7bc366e558]por[code:1:7bc366e558]/opt/IBM/informix/bin/dbexport -d itnetuybiblos -o /respaldo &> ~/log_ejecucion[/code:1:7bc366e558]
As?, si dbexport (o incluso el shell) se queja de alguna cosa, quedar? escrita en el fichero ~/log_ejecucion y podr?s leerlo.

Saludos.
riverito
Forista
Registrado: 2014-02-23
Mensajes: 5

Publicado: 2014-02-26 16:54:00    Asunto:

Hola, le cambi? esa l?nea y en el archivo log_ejecucion me aparece esto:

[quote:fec92f1486]-23101 Unable to load locale categories.[/quote:fec92f1486]
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2014-02-26 17:40:20    Asunto: correcci?n

Seg?n comentan por aqu? http://www.iiug.org/forums/ids/index.cgi/noframes/read/3333 lo que te ocurre es un problema de $INFORMIXDIR. Una de dos, o $INFORMIXDIR no ha sido configurado correctamente, o los ficheros de las locales en $INFORMIXDIR no se pueden encontrar o leer, por la raz?n que sea. Si tienes alguna duda, puedes hacer la instalaci?n completa de nuevo para asegurarte de que todos los ficheros est?n ah? y que la instalaci?n se haga completa.
riverito
Forista
Registrado: 2014-02-23
Mensajes: 5

Publicado: 2014-02-26 18:17:32    Asunto:

SOLUCIONADO:

Me puse a buscar ese error que me dio y llegue a esta pagina:
http://www-01.ibm.com/support/docview.wss?uid=swg21570617

hice todo lo que dec?a y me sirvi?! era problema de las variables de informix que no cargaban en el crontab, hab?a que agregarlas manualmente dentro del script.

O sea agregar esto (con nuestros datos) al principio del script:
[code:1:2c9ae7e50c]INFORMIXDIR=<path_to_informix_engine>
export INFORMIXDIR
PATH=${INFORMIXDIR}/bin:${PATH}
export PATH
INFORMIXSERVER=<informix_server_name>
export INFORMIXSERVER
ONCONFIG=<configuration_file_name>
export ONCONFIG
INFORMIXSQLHOSTS=<path_to_sqlhosts_file>
export INFORMIXSQLHOSTS[/code:1:2c9ae7e50c]

GRACIAS POR LAS RESPUESTAS!
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2014-02-26 18:30:13    Asunto:

O sea, que no hab?as configurado las variables del entorno ENFORMIXDIR.

Las gracias son para Miguel, que fue con su ayuda como conseguimos un informe de error.





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries