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 »

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 »

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 »

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 »

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 »

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 »

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 »

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 »

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
  • Temas similares
    Respuestas
    Vistas
    Último mensaje