Pessoal, olá a todos. Segue parte do script que tenho e que falha, não por sintax, mas sim por eficiencia e exatidão no kill do processo.
###################################################################### ARQ=$(ls UNIAO_GeraExpFull_Un01*) #DIRETORIO DE LOCK Definindo procedimentos para Abortar o script" LOG + "Analisando o Arquivo: ${ARQ}" wd_PID=`echo ${ARQ} | awk -F. '{print $3}'` LOG + "PID do Arquivo ${ARQ} e ${wd_PID}" 1 wd_PROCESSO=`ps -ef | grep ${wd_PID} | grep -v grep | wc -l` LOG 2 "Finalizando os processos em ordem inversa, dos processos FILHOS ate chegar no processo PAI" for MATA_PROCESSO in $(ps -ef | grep ${wd_PID} | grep -v grep | awk - F" " '{print $2}' | sort -r) do gABORT="S" kill -15 ${MATA_PROCESSO} gABORT="N" LOG + "Processo: ${MATA_PROCESSO} Encerrado" done ###################################################################### O que ocorre de errado de vez em quando é que ao capturar com ps -ef para popular a variavel wd_PROCESSO, ele pega outros pids que nao tem nada a ver com o processo em questao. Por exemplo, se o pid do processo for 58, com o comando em questão, alem do 58 ele pega o 1058. Dai, ao tentar matar o processo na parte onde tem o for MATA_PROCESSO, ele falha... (ainda bem que falha) pois estaria tentando matar um processo que nao tem nada a ver... A pergunta é : como restringir de forma que o pid capturado pelo ps - ef | grep seja mesmo o 58 e nao 1058 ? Tentei restringir , fazendo com os os pids retornados seja os que o usuario que executou o script executou, de forma que os pids seria pelo menos os do usuario que executa o script, mas mesmo assim fica falho o script. (ps -fu user). Creio que seja uma coisa bem simples... Valeu... SDS Sergio