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 shell-script@yahoogrupos.com.br, César A. K. Grossmann <cesar...@...> escreveu > > --- Em shell-script@yahoogrupos.com.br, "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 >