[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Duvida - nohup / wait
From: |
OBD ( Stormfish ) |
Subject: |
Re: Duvida - nohup / wait |
Date: |
Tue, 16 Jun 2009 21:19:55 -0000 |
User-agent: |
eGroups-EW/0.82 |
Fala Cesar ...
Lembro das suas dicas na epoca dos "news" do UOL .
Voltando as duvidas, acho que você não entendeu direito a minha duvida então,
resolvi colocar o script ( resumido, abaixo ) para tentar me explicar melhor .
A duvida esta nas linhas que começam com "(nohup
${MAIN_DIR}${BIN}/FL_STG_EFA0RCVNT_RECEIVING.sh "${parm1}" "${parm2}"
"${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}" "${MAIN_DIR}${LOG}") &"
eu quero que o script apenas de prosseguimento e encerre quando estes
sub-shells estiverem concluidos ... a principio, eu não estou conseguindo isto
:-(
################### COMECA AQUI ##############
#! /bin/sh
set -x
#########################################################################
# #
# Nome do Script : extract_fl_stg.sh #
# Autor : Obede Sant'Ana #
# Data : 10/06/2009 #
# Objetivo :extracao de dados #
# Parametros : #
# parm1 - usuario #
# parm2 - password #
# parm3 - dia de inicio da extracao #
# parm4 - mes de inicio da extracao #
# parm5 - ano de inicio da extracao #
# #
# Dependencias : #
# 1) arquivo de parametros "extract_fl_stg" no diretorio #
# /home/<user>/parm #
# #
# uso : #
# #
# Modificacoes : #
# Autor : #
# Data : #
# Objetivo : #
# #
#########################################################################
start_env()
{
echo '*********** EXECUTANDO START_ENV ***************'
### Oracle ###
ORACLE_HOME=/tcvrdi/oracle/product/920
export ORACLE_HOME
ORACLE_BIN=${ORACLE_HOME}/bin
export ORACLE_BIN
ORACLE_LIB=${ORACLE_HOME}/lib
export ORACLE_LIB
NLS_LANG=AMERICAN_AMERICA.WE8DEC
export NLS_LANG
ORACLE_SID=tcvrdi
export ORACLE_SID
### Outras ####
PATH=${PATH}:.:${ORACLE_HOME}:${ORACLE_BIN}:${ORACLE_LIB}:/usr/bin/
export PATH
MAIN_DIR='/home/<user>/'
export MAIN_DIR
OUTBOUND='/outbound'
export OUTBOUND
PARM='/parm'
export PARM
BIN='/bin'
export BIN
LOG='/log'
export LOG
TEMP='/temp'
export TEMP
START_DATE=`/usr/bin/date '+%d%m%Y%H%M%S'` # Data a ser passada para formatar
# nomes dos arquivos gerados
export START_DATE
ERROR_CODE=0 # codigo de erro diferente de 0 indica falha
export ERROR_CODE
MAIN_LOG_FILE=${MAIN_DIR}${LOG}/extract_fl_stg_${START_DATE}.log
export MAIN_LOG_FILE
ARQ_PARAM=`echo ${MAIN_DIR}${PARM}/extract_fl_stg`
parm1=`grep PARM1 /transfer/elo/fin/parm/extract_fl_stg|awk -F= '{print $2}'`
parm2=`grep 'PARM2' ${ARQ_PARAM}|awk -F= '{print $2}'`
parm3=`grep 'PARM3' ${ARQ_PARAM}|awk -F= '{print $2}'`
parm4=`grep 'PARM4' ${ARQ_PARAM}|awk -F= '{print $2}'`
parm5=`grep 'PARM5' ${ARQ_PARAM}|awk -F= '{print $2}'`
# CONSTANTES
TOTAL_ARQUIVOS=29
}
start_log()
{
echo '**************** EXECUTANDO START_LOG **********************'
echo "Inicio do processo de extracao de dados - data:`/usr/bin/date` " >>
${MAIN_LOG_FILE}
echo "******** Parametros passados **********" >> ${MAIN_LOG_FILE}
echo "Periodo da extracao: " >> ${MAIN_LOG_FILE}
echo "Data de Inicio : ${parm3}/${parm4}/${parm5}" >> ${MAIN_LOG_FILE}
echo "Data de Fim : Sem Data Informada" >> ${MAIN_LOG_FILE}
echo "" >> ${LOG_FILE}
}
valida()
{
ERROR_CODE=0
if [ $# -lt 0 ]; then
echo "*******************************************" >> ${MAIN_LOG_FILE}
echo "ERROR :Numero de argumentos invalido! > $# " >> ${MAIN_LOG_FILE}
echo "*******************************************" >> ${MAIN_LOG_FILE}
ERROR_CODE=3
exit ${ERROR_CODE}
fi
return ${ERROR_CODE}
}
verifica_arquivos()
{
QTD_ARQ=`ls ${MAIN_DIR}${TEMP}/FL_STG_EF*${START_DATE}.txt|wc -l`
#if [ ${QTD_ARQ} -ne ${TOTAL_ARQUIVOS} ]
if [ ${QTD_ARQ} -ne 29 ]
then
echo "*********************************************************" >>
${MAIN_LOG_FILE}
echo "ERROR - Nao foram gerados todos os arquivos de extracao !" >>
${MAIN_LOG_FILE}
echo "*********************************************************" >>
${MAIN_LOG_FILE}
ERROR_CODE=4
else
for ARQ_STG in `ls ${MAIN_DIR}${TEMP}/FL_STG_EF*${START_DATE}.log`
do
ARQ_STG_MAIN=`${ARQ_STG}|cut -f1 -d"."`
QTD_ERROR=`grep -c Erro ${ARQ_STG}`
if [ QTD_ERRO -gt 0 ]
then
ERROR_CODE=5
echo "************************************************************"
>> ${MAIN_LOG_FILE}
echo "ERROR : Arquivo ${ARQ_STG_MAIN}.txt concluido com erro ! "
>> ${MAIN_LOG_FILE}
echo "ERROR : Verifique o arquivo ${ARQ_STG} para maiores detalhes"
>> ${MAIN_LOG_FILE}
echo "************************************************************"
>> ${MAIN_LOG_FILE}
else
ERROR_CODE=0
fi
done
return ${ERROR_CODE}
fi
}
#atualiza_parametros()
#{
#
#}
#### function main #####
###main######
# trap '' TTOU
# . /etc/profile
# set +x
start_env
# Inicializa log
start_log
# Valida parametros
if [ -f ${MAIN_DIR}${PARM}/extract_fl_stg ]
then
valida
ERROR_CODE=$?
else
ERROR_CODE=2
echo "************************************************************" >>
${MAIN_LOG_FILE}
echo "ERROR : Arquivo ${ARQ_STG_MAIN}.txt concluido com erro ! " >>
${MAIN_LOG_FILE}
echo "ERROR : Verifique o arquivo ${ARQ_STG} para maiores detalhes" >>
${MAIN_LOG_FILE}
echo "************************************************************" >>
${MAIN_LOG_FILE}
fi
if [ ${ERROR_CODE} -ne 0 ]
then
exit ${ERROR_CODE}
else
# se paramatros estao ok, inicia extracao de dados
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFA0RCVNT_RECEIVING.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFA4INVDT_AR_INV_DETAIL.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFAAPDGRT_PAYMENT_DOC_GR.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFABSTPYT_PAYMENT_STATUS.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFACMTPYT_PAYMENT_METHOD.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFADFDCTT_FINAN_DOC_TYPE.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFAEFNDST_FINAN_DOC_ST.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFAFFDCT_FINAN_DOC_AP.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFBCPAYMT_PAYMENT.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup ${MAIN_DIR}${BIN}/FL_STG_EFAVINDTT_AP_INST_DETAIL.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
(nohup "${MAIN_DIR}${BIN}"/FL_STG_EFBAARIAT_REC_INST_ALLOT.sh "${parm1}"
"${parm2}" "${parm5}" "${parm4}" "${parm3}" "${MAIN_DIR}${LOG}"
"${MAIN_DIR}${LOG}") &
wait
fi
verifica_arquivos
# atualiza_parametros
########################## TERMINA AQUI ################
--- Em address@hidden, César A. K. Grossmann <cesarakg@...> escreveu
>
> --- Em address@hidden, "OBD ( Stormfish )" <malakh_rj@> escreveu
> >
> > Alguém pode me dar uma indicação de como usar o "nohup" e/ou "wait" para
> > conseguir isto ? ( ou devo usar outro comando ?
>
> Eu usei um trap para interceptar o Ctrl-C que eu uso para terminar um script,
> e um pkill com o número do processo "pai" para matar todos os processos
> filhos.
>
> Veja a seguinte mensagem no grupo (meu script):
>
> http://br.groups.yahoo.com/group/shell-script/message/29428
>
- Duvida - nohup / wait, OBD ( Stormfish ), 2009/06/16
- Re: Duvida - nohup / wait, César A . K . Grossmann, 2009/06/16
- Re: Duvida - nohup / wait,
OBD ( Stormfish ) <=
- Re: [shell-script] Re: Duvida - nohup / wait, Jorge Pereira, 2009/06/16
- Re: [shell-script] Re: Duvida - nohup / wait, Christian Lyra, 2009/06/17
- Re: [shell-script] Re: Duvida - nohup / wait, Julio C. Neves, 2009/06/17
- Re: Duvida - nohup / wait, OBD ( Stormfish ), 2009/06/17
- Re: [shell-script] Re: Duvida - nohup / wait, Luciano Costa, 2009/06/22
- Re: Duvida - nohup / wait, OBD ( Stormfish ), 2009/06/17