Ejecutar Dbexport Desde Crontab

Todos los comentarios sobre redes y servidores en linux y su interacción con otros sistemas operativos.

Moderadores: doc, Kde_Tony, ps-ax

Responder
riverito
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Feb 23, 2014 5:13 pm

Ejecutar Dbexport Desde Crontab

Mensaje por riverito » Dom Feb 23, 2014 5:21 pm

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:
dbexport -d base -o /respaldo

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:

25 15 * * * sh /prueba.sh

(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.
MetTxin
Forista Medio
Forista Medio
Mensajes: 332
Registrado: Mié Abr 27, 2011 11:32 am

Re: Ejecutar Dbexport Desde Crontab

Mensaje por MetTxin » Lun Feb 24, 2014 11:16 pm

Comprueba que el PATH que tiene el crontab contenga lo necesario para ejecutar el script, podrían ir por ahí los tiros!

otra idea, puedes redirigir los errores a un fichero, a ver qué te saca, tipo

./script 2>/tu_home/error.log
riverito
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Feb 23, 2014 5:13 pm

Re: Ejecutar Dbexport Desde Crontab

Mensaje por riverito » Mar Feb 25, 2014 6:23 am

En que parte puedo verificar el PATH que tiene el crontab??

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

Código: Seleccionar todo

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
Por lo que vi el dbexport esta ubicado en /opt/IBM/informix/bin

Si ejecuto ./prueba.sh >/error.log desde el crontab me crea el archivo error.log vacío, sin nada dentro, es como que el crontab ni llega a ejecutar el comando dbexport dentro del prueba.sh

Gracias por responder.
Avatar de Usuario
cuentos
Forista Distinguido
Forista Distinguido
Mensajes: 1088
Registrado: Mar May 03, 2011 7:09 am

Re: Ejecutar Dbexport Desde Crontab

Mensaje por cuentos » Mar Feb 25, 2014 7:25 am

Como te comentaron puedes probar con la ruta completa en el script
/

Código: Seleccionar todo

/opt/IBM/informix/bin/dbexport  -d base -o /respaldo
Cuando mi maestro me reprendió, me dijo: Alejandro Magno a los 20 años conquistaba el mundo, Yo le conteste "si pero tenia de maestro a Aristóteles".
Twitter: @mcuentos
MetTxin
Forista Medio
Forista Medio
Mensajes: 332
Registrado: Mié Abr 27, 2011 11:32 am

Re: Ejecutar Dbexport Desde Crontab

Mensaje por MetTxin » Mar Feb 25, 2014 11:13 am

riverito escribió:En que parte puedo verificar el PATH que tiene el crontab??

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

Código: Seleccionar todo

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
Por lo que vi el dbexport esta ubicado en /opt/IBM/informix/bin
Una cosa es el PATH que tienes en el terminal cuando ejecutas algo y otra, que puede ser diferente, el PATH del crontab

Puedes intentar una cosa. Ejecutas «echo $PATH» en un terminal, y lo que te salga se lo añades al crontab, en una línea. Cuando edites el crontab fíjate si hay una línea llamada PATH, si no la hay se la añades arriba con lo mismo que te haya salido en el terminal, tipo..

PATH=lo_que_salga_en_el_anterior_comando
riverito escribió: Si ejecuto ./prueba.sh >/error.log desde el crontab me crea el archivo error.log vacío, sin nada dentro, es como que el crontab ni llega a ejecutar el comando dbexport dentro del prueba.sh

Gracias por responder.
Se te ha olvidado el «2», que es para redirigir los errores. Deberías escribir:

./prueba.sh 2>/ruta/error.log

y casi mejor colocarte en el directorio donde esté el script antes de ejecutarlo, por si necesita ejecutarse ahí (que no lo sé!), porque quizás no encuentre el script, o poner como dice cuentos la ruta completa al script. Por ejemplo, en crontab,

cd /ruta_del_script/ && ./prueba.sh 2>error.log
riverito
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Feb 23, 2014 5:13 pm

Re: Ejecutar Dbexport Desde Crontab

Mensaje por riverito » Mar Feb 25, 2014 9:26 pm

cuentos escribió:Como te comentaron puedes probar con la ruta completa en el script
/

Código: Seleccionar todo

/opt/IBM/informix/bin/dbexport  -d base -o /respaldo
Intenté hacer eso pero sigue sin ejecutarse desde el crontab.
MetTxin escribió:Una cosa es el PATH que tienes en el terminal cuando ejecutas algo y otra, que puede ser diferente, el PATH del crontab

Puedes intentar una cosa. Ejecutas «echo $PATH» en un terminal, y lo que te salga se lo añades al crontab, en una línea. Cuando edites el crontab fíjate si hay una línea llamada PATH, si no la hay se la añades arriba con lo mismo que te haya salido en el terminal, tipo..

PATH=lo_que_salga_en_el_anterior_comando
Escribí esa linea, luego edite el archivo /etc/crontab con el comando nano y pegue las rutas luego del "PATH=" (solo tenia 2 rutas en el crontab).
Así quedó el /etc/crontab
Imagen

Luego con el crontab -e, puse para que se ejecutara el script el en el próximo minuto y sigue sin funcionar.
Al script le agregue una linea con mkdir para que cree una carpeta para ver si se ejecuta o no, y la carpeta la crea, pero el dbexport no lo hace.
MetTxin escribió:Se te ha olvidado el «2», que es para redirigir los errores. Deberías escribir:

./prueba.sh 2>/ruta/error.log

y casi mejor colocarte en el directorio donde esté el script antes de ejecutarlo, por si necesita ejecutarse ahí (que no lo sé!), porque quizás no encuentre el script, o poner como dice cuentos la ruta completa al script. Por ejemplo, en crontab,

cd /ruta_del_script/ && ./prueba.sh 2>error.log
le agregue el 2 y en el error.log me aparece esto: "-23101 Unable to load locale categories."
MetTxin
Forista Medio
Forista Medio
Mensajes: 332
Registrado: Mié Abr 27, 2011 11:32 am

Re: Ejecutar Dbexport Desde Crontab

Mensaje por MetTxin » Mar Feb 25, 2014 10:23 pm

riverito escribió: le agregue el 2 y en el error.log me aparece esto: "-23101 Unable to load locale categories."
Parece un problema de eso, de carga de locales y variables de env, lo malo es que tampoco sé exactamente cuáles debe tener ese dbexport, no lo conozco

Yo te aconsejaría, primero quitar lo del PATH que pusiste en el cron para arrancar "limpios" y dejarlo como estaba, después añadir al crontab una línea que te exporte el env, algo como...

* * * * * env >> /home/usuario/variables_de_entorno.txt

esperas un minuto o dos (mejor dos) y compruebas qué contiene el archivo "variables_de_entorno", quitas del cron la línea para no marearlo, después vas a un terminal y tecleas «env», luego comparas y verás las diferencias entre la salida y el archivo. Y para arreglarlo pues, :), eso ya..., se lo añades donde puedas las variables que necesites. No se me ocurren más cosas
riverito
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Feb 23, 2014 5:13 pm

Re: Ejecutar Dbexport Desde Crontab

Mensaje por riverito » Mar Feb 25, 2014 11:49 pm

acabo de hacerlo y sigue igual, ya no se que hacer... es como si crontab y el dbexport fueran incompatibles.

no existe alguna forma de hacer tareas programadas sin usar el crontab???
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje