shell redhat 中没有这样的文件或目录
No such file or directory in shell redhat
我正在尝试从我的 redhat 7.9 机器中 运行 一个 .sh shell 与文件所在的位置不同,因为这是必需的。但是标记错误不是这样的文件或目录,尽管我传递了正确的路径标记错误。值得一提的是,如果在 shell 所在的路径执行,则执行没有问题,但需要能够在该文件系统之外执行。权限已经被授予文件系统,用户被分配到组,它仍然标记相同。
#!/bin/bash
file=
#Ruta del proyecto scripts
#ruta=/home/db2inst1
ruta=/opt/IBM/db2/V11.1/bin/
#Conexion a db2
/opt/IBM/db2/V11.1/bin/db2 connect to INFOST > connect_db2_log
fecha="$(date +"%Y-%m-%d - %Hhr_%Mmin_%Sseg")"
date0="$(date +"%Y-%m-%d - %H:%M:%S")"
fecha_flujo_inicio="$(date +%s)"
#echo "Timestamp inicio $fecha_flujo_inicio"
#Lectura del archivo con las tablas a ingestar
while IFS= read line; do
tablaname=$(cut -d " " -f1 <<< $line)
tab_infost=$(cut -d " " -f2 <<< $line)
echo $fecha
echo "Nombre de la tabla: $tablaname"
#sleep 20
/opt/IBM/db2/V11.1/bin/db2 "select count(*) from IS_STAGING.$tablaname" > test_log_count
#echo "des.2019" | "su - db2inst1 -c "db2 'select count(*) from IS_STAGING.$tablaname'" > test_log_count
IFS=$', ' GLOBIGNORE='*' command eval 'L=($(cat test_log_count))'
Count=${L[2]}
echo $Count
#f=$ruta/BITACORA_TABLAS/Bitacora_$tablaname
#Verificacion de que el COUNT de la tabla sea entero
if [[ "$((Count))" =~ ^[0-9]+$ ]]; then
#Caso en el que la BITACORA esta VACIA
#if [[ ! -s $f ]]; then
echo "Ingesta de $tablaname & $tab_infost"
echo "############################################################"
echo "###################### $tablaname ##########################"
echo "############################################################"
echo "Count consultado: $((Count))"
if [[ ${L[2]} -eq 0 ]]; then
runtime="1 minute"
endtime=$(date -ud "$runtime" +%s)
echo "####### Esperando que se llene la tabla... ######"
while [[ $(date -u +%s) -le $endtime ]]; do
#sleep 210
/opt/IBM/db2/V11.1/bin/db2 "select count(*) from IS_STAGING.$tablaname" > test_log_count
IFS=$', ' GLOBIGNORE='*' command eval 'L=($(cat test_log_count))'
if [[ ${L[2]} -eq 0 ]]; then
continue
else
echo "########Se lleno la tabla...##########"
break
fi
done
fi
if [[ ${L[2]} -eq 0 ]]; then
echo "################NO HAY DATOS################"
time0="$(date +"%Y-%m-%d - %H:%M:%S")"
echo "###################### ESTA VACIA LA TABLA ##########################"
sudo echo $time0 $tablaname $tab_infost ${L[2]} >> $ruta/LOGS_INGESTA/TABLAS_VACIAS
fi
#echo ${L[2]}
#Count diferente de 0
#sleep 10
if [[ ${L[2]} -ne 0 ]]; then
echo "Ingestando..."
echo "Tabla $tablaname esta llena con ${L[2]}, ejecutando ingesta al INFO STORE..." # Ejecutar ingesta
#echo "${fecha}" ${L[2]} >> $ruta/BITACORA_TABLAS/Bitacora_$tablaname
time1="$(date +"%Y-%m-%d-%H:%M:%S")"
#sudo sh /opt/IBM/i2EIA/toolkit/scripts/setup -t ingestInformationStoreRecords -p importMappingsFile=/opt/IBM/i2EIA/toolkit/configuration/data_actinver/mapping.xml -p importMappingId=$tab_infost -p importMode=STANDARD &
if [[ ${L[2]} -gt 14000 ]]; then
sudo sh /opt/IBM/i2EIA/toolkit/scripts/setup -t ingestInformationStoreRecords -p importMappingsFile=/opt/IBM/i2EIA/toolkit/configuration/data_actinver/mapping.xml -p importMappingId=$tab_infost -p importMode=STANDARD &
sleep 45
echo "Espera 50 segundos"
else
sudo sh /opt/IBM/i2EIA/toolkit/scripts/setup -t ingestInformationStoreRecords -p importMappingsFile=/opt/IBM/i2EIA/toolkit/configuration/data_actinver/mapping.xml -p importMappingId=$tab_infost -p importMode=STANDARD
fi
status=$?
time2="$(date +"%Y-%m-%d-%H:%M:%S")"
#Estatus de la ejecucion
#echo "Estatus: $status"
if [ $status -eq 0 ]; then
echo "Estatus de la ejecucion: Exitoso"
sudo echo "Tabla: $tab_infost Tiempo: $time1 -> $time2 Numero_registros_ingestados: ${L[2]}" >> $ruta/LOGS_INGESTA/TABLAS_EXITOSAS
else
echo "Estatus de la ejecucion: Failed"
#sudo echo "Error_archivo $tab_infost Tiempo: $time0 $time1" Numero_registros: ${L[2]} >> $ruta/log_error_ingesta
sudo echo $time1 $tablaname $tab_infost ${L[2]} >> $ruta/LOGS_INGESTA/TABLAS_FALTANTES
fi
#break
#Esperar ingesta
else
continue
#echo "Tabla $tablaname vacia, esperando sea llenada..." # Ejecutar ingesta
#while
fi
else
echo "El Count de la tabla no es un entero"
sudo echo "Error: $tablename $tab_infost ${L[2]}" >> $ruta/LOGS_INGESTA/TABLAS_ERROR
fi
done < $file
wait
date1="$(date +"%Y-%m-%d - %H:%M:%S")"
fecha_flujo_final="$(date +%s)"
#echo "Timestamp final $fecha_flujo_final"
#t_delta=$((fecha_flujo_final - fecha_flujo_inicio))
sudo echo "Flujo: $file, Fechas: $date0 -> $date1, Tiempo trancurrido: $((fecha_flujo_final - fecha_flujo_inicio)) segundos" >> $ruta/LOGS_INGESTA/FLUJOS_LOG
echo "TERMINO EL FLUJO $file"
标记的错误是以下NO SUCH FILE OR DIRECTORY
[i2actinver@v2qlintfinan01 home]$ /opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh FLUJOS/flujo_01
/opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh: line 107: FLUJOS/flujo_01: No such file or directory
TERMINO EL FLUJO FLUJOS/flujo_01
[i2actinver@v2qlintfinan01 home]$
我的工作方式是添加绝对路径/opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh
/opt/IBM/db2/V11.1/bin/FLUJOS/flujos_01谢谢大家。
我正在尝试从我的 redhat 7.9 机器中 运行 一个 .sh shell 与文件所在的位置不同,因为这是必需的。但是标记错误不是这样的文件或目录,尽管我传递了正确的路径标记错误。值得一提的是,如果在 shell 所在的路径执行,则执行没有问题,但需要能够在该文件系统之外执行。权限已经被授予文件系统,用户被分配到组,它仍然标记相同。
#!/bin/bash
file=
#Ruta del proyecto scripts
#ruta=/home/db2inst1
ruta=/opt/IBM/db2/V11.1/bin/
#Conexion a db2
/opt/IBM/db2/V11.1/bin/db2 connect to INFOST > connect_db2_log
fecha="$(date +"%Y-%m-%d - %Hhr_%Mmin_%Sseg")"
date0="$(date +"%Y-%m-%d - %H:%M:%S")"
fecha_flujo_inicio="$(date +%s)"
#echo "Timestamp inicio $fecha_flujo_inicio"
#Lectura del archivo con las tablas a ingestar
while IFS= read line; do
tablaname=$(cut -d " " -f1 <<< $line)
tab_infost=$(cut -d " " -f2 <<< $line)
echo $fecha
echo "Nombre de la tabla: $tablaname"
#sleep 20
/opt/IBM/db2/V11.1/bin/db2 "select count(*) from IS_STAGING.$tablaname" > test_log_count
#echo "des.2019" | "su - db2inst1 -c "db2 'select count(*) from IS_STAGING.$tablaname'" > test_log_count
IFS=$', ' GLOBIGNORE='*' command eval 'L=($(cat test_log_count))'
Count=${L[2]}
echo $Count
#f=$ruta/BITACORA_TABLAS/Bitacora_$tablaname
#Verificacion de que el COUNT de la tabla sea entero
if [[ "$((Count))" =~ ^[0-9]+$ ]]; then
#Caso en el que la BITACORA esta VACIA
#if [[ ! -s $f ]]; then
echo "Ingesta de $tablaname & $tab_infost"
echo "############################################################"
echo "###################### $tablaname ##########################"
echo "############################################################"
echo "Count consultado: $((Count))"
if [[ ${L[2]} -eq 0 ]]; then
runtime="1 minute"
endtime=$(date -ud "$runtime" +%s)
echo "####### Esperando que se llene la tabla... ######"
while [[ $(date -u +%s) -le $endtime ]]; do
#sleep 210
/opt/IBM/db2/V11.1/bin/db2 "select count(*) from IS_STAGING.$tablaname" > test_log_count
IFS=$', ' GLOBIGNORE='*' command eval 'L=($(cat test_log_count))'
if [[ ${L[2]} -eq 0 ]]; then
continue
else
echo "########Se lleno la tabla...##########"
break
fi
done
fi
if [[ ${L[2]} -eq 0 ]]; then
echo "################NO HAY DATOS################"
time0="$(date +"%Y-%m-%d - %H:%M:%S")"
echo "###################### ESTA VACIA LA TABLA ##########################"
sudo echo $time0 $tablaname $tab_infost ${L[2]} >> $ruta/LOGS_INGESTA/TABLAS_VACIAS
fi
#echo ${L[2]}
#Count diferente de 0
#sleep 10
if [[ ${L[2]} -ne 0 ]]; then
echo "Ingestando..."
echo "Tabla $tablaname esta llena con ${L[2]}, ejecutando ingesta al INFO STORE..." # Ejecutar ingesta
#echo "${fecha}" ${L[2]} >> $ruta/BITACORA_TABLAS/Bitacora_$tablaname
time1="$(date +"%Y-%m-%d-%H:%M:%S")"
#sudo sh /opt/IBM/i2EIA/toolkit/scripts/setup -t ingestInformationStoreRecords -p importMappingsFile=/opt/IBM/i2EIA/toolkit/configuration/data_actinver/mapping.xml -p importMappingId=$tab_infost -p importMode=STANDARD &
if [[ ${L[2]} -gt 14000 ]]; then
sudo sh /opt/IBM/i2EIA/toolkit/scripts/setup -t ingestInformationStoreRecords -p importMappingsFile=/opt/IBM/i2EIA/toolkit/configuration/data_actinver/mapping.xml -p importMappingId=$tab_infost -p importMode=STANDARD &
sleep 45
echo "Espera 50 segundos"
else
sudo sh /opt/IBM/i2EIA/toolkit/scripts/setup -t ingestInformationStoreRecords -p importMappingsFile=/opt/IBM/i2EIA/toolkit/configuration/data_actinver/mapping.xml -p importMappingId=$tab_infost -p importMode=STANDARD
fi
status=$?
time2="$(date +"%Y-%m-%d-%H:%M:%S")"
#Estatus de la ejecucion
#echo "Estatus: $status"
if [ $status -eq 0 ]; then
echo "Estatus de la ejecucion: Exitoso"
sudo echo "Tabla: $tab_infost Tiempo: $time1 -> $time2 Numero_registros_ingestados: ${L[2]}" >> $ruta/LOGS_INGESTA/TABLAS_EXITOSAS
else
echo "Estatus de la ejecucion: Failed"
#sudo echo "Error_archivo $tab_infost Tiempo: $time0 $time1" Numero_registros: ${L[2]} >> $ruta/log_error_ingesta
sudo echo $time1 $tablaname $tab_infost ${L[2]} >> $ruta/LOGS_INGESTA/TABLAS_FALTANTES
fi
#break
#Esperar ingesta
else
continue
#echo "Tabla $tablaname vacia, esperando sea llenada..." # Ejecutar ingesta
#while
fi
else
echo "El Count de la tabla no es un entero"
sudo echo "Error: $tablename $tab_infost ${L[2]}" >> $ruta/LOGS_INGESTA/TABLAS_ERROR
fi
done < $file
wait
date1="$(date +"%Y-%m-%d - %H:%M:%S")"
fecha_flujo_final="$(date +%s)"
#echo "Timestamp final $fecha_flujo_final"
#t_delta=$((fecha_flujo_final - fecha_flujo_inicio))
sudo echo "Flujo: $file, Fechas: $date0 -> $date1, Tiempo trancurrido: $((fecha_flujo_final - fecha_flujo_inicio)) segundos" >> $ruta/LOGS_INGESTA/FLUJOS_LOG
echo "TERMINO EL FLUJO $file"
标记的错误是以下NO SUCH FILE OR DIRECTORY
[i2actinver@v2qlintfinan01 home]$ /opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh FLUJOS/flujo_01
/opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh: line 107: FLUJOS/flujo_01: No such file or directory
TERMINO EL FLUJO FLUJOS/flujo_01
[i2actinver@v2qlintfinan01 home]$
我的工作方式是添加绝对路径/opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh /opt/IBM/db2/V11.1/bin/FLUJOS/flujos_01谢谢大家。