Script linux

Hola!
Soy nueva usando linux y pequeños scripts. Hice uno que extrae información de una tabla de la base de datos y funciona bien siempre y cuando lo ejecuto manualmente en la ruta donde se encuentra el .sh, pero quisiera que el crontab lo corra automáticamente, al programarlo la salida es una línea en blanco :( no sé cuál es el error, ¿tal vez alguien me puede auxiliar por favor? Abajo pongo el código del .sh y del crontab.
En /home/oracle tengo archivo (vacío) y fv.sh; fv.sh contiene:
BASE_PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/BIN:/USR/x11r6/sbin:root/bin/usr/local/maint/oracle:$ORACLE_BASE/scripts/general
PATH=${BASE_PATH}:${ORACLE_HOME}/bin:${ORACLE_HOME}/OPatch
ORACLE_BASE=/oracle/app
ORACLE_HOME=$ORACLE_BASE/product/10g
NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss'
ORACLE_SID=FMSDB
export BASE_PATH PATH ORACLE_BASE ORACLE_HOME NLS_DATE_FORMAT ORACLE_SID
var=`sqlplus -s <<EOF
user/password
SET HEADING OFF
SET ECHO OFF
SET TAB OFF
SELECT sysdate, count(*)
FROM tabla
/
EXIT
EOF`
echo $var >> /home/oracle/archivo
El crontab (creado dentro de /home/oracle) contiene:
27 09 * * * sh /home/oracle/fv.sh
Gracias!
Neuve

1 respuesta

Respuesta
1
En el script tal vez quieras poner la línea que define ORACLE_HOME antes que la de BASE_PATH.
Ahora, no entiendo cuando dices que el crontab lo haz creado dentro de /home/oracle, lo cual me parece incorrecto. El crontab se crea en el archivo /etc/crontab o se se crea ejecutando el comando 'crontab -e' (en tu caso, a través del usuario oracle).
Si se define el crontab en el archivo /etc/crontab sería:
27 09 * * * oracle sh /home/oracle/fv.sh
Si lo vas a hacer usando el comando 'crontab -e' con el usuario oracle sería:
27 09 * * * sh /home/oracle/fv.sh
Hola experto.
Gracias por la respuesta. Correcto, para la especificación del crontab hice 'crontab -e' con el usuario oracle:
27 09 * * * sh /home/oracle/fv.sh
Pero no funciona :( sólo aparece una línea en blanco luego de la ejecución.
¿Alguna idea de por qué no funciona? ¿Tal vez se debe añadir alguna variable en el script? Hasta donde me comentaron, ni siquiera debería ser necesario incluir las variables al inicio del script, por estar trabajando con el usuario oracle.
Si yo corro manualmente ( en el prompt ./fv.sh) el script funciona tal cual lo necesito. Pero no funciona cuando lo ejecuta el cron.
Gracias!
Si debes definir las variables en el script porque lo que se ejecuta desde el crontab no carga las variables como cuando el usuario accede por terminal.
Así que te sugiero unos cambios en el script:
1. Cambiar el orden de las variables así:
ORACLE_BASE
ORACLE_HOME
BASE_PATH
PATH
2. Usa la ruta completa al comando sqlplus
Ya respondí a este reply, mira arriba.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas