Um bom exemplo é o SIGPIPE (13) quando vc faz cat xxx | head -2
o head imprime as 2 primeiras linhas e 'fecha' o pipe. o cat recebe um SIGPIPE e para de enviar o conteudo do arquivo xxx (imagine se ele tivesse 1 bilhão de linhas? pra que enviar tudo se só 2 são necessárias? pois é). O seu script poderia ter um trap nesse sinal para fazer alguma coisa nesse evento - como terminar um socket ou algo mais delicado. O sinal 1, por outro lado, não mata processo algum, mas normalmente é usado para forçar os processos a ler os arquivos de configuração novamente (evitando restart do serviço). O sinal que vc está capturando, por outro lado... http://en.wikipedia.org/wiki/SIGUSR1_and_SIGUSR2 On 1/7/08, Julio C. Neves <[EMAIL PROTECTED]> wrote: > Fala Marcus, > nem todo sinal mata (o 19 p.ex. somente suspende o processo). Sobre os > sinais 10 e 12 (SIGUSR1 e SIGUSR2), eu só sei que os são usados para > threads > e por isso pode ser que isto que vc constatou seja a sua característica, > nem > sei pq vc o está utilizando. > > O que te falei sobre o trap é verdade e funciona. Pq vc não o experimenta > com o sinal 15 que é o default do kill? > > Abraços, > Julio > > Em 07/01/08, Marcus Vinicius <[EMAIL PROTECTED]<marc_mcs10%40yahoo.com.br>> > escreveu: > > > > Olá Julio, Obrigado pela resposta. > > > > Testei com ( ' ) mas o sintoma permaneceu o mesmo. > > > > simplifiquei a linha do trap com um único comando que ao receber o sinal > > 10 deveria me enviar uma mensagem na tela.. > > > > trap 'echo Execução Interrompida' 10 > > > > while : ; do ## loop infinito > > sleep ${durma} > > echo Script em Execução, com sleep em ${durma} > > done > > > > Fix um debug com a opção "-x" e quando eu envio o sinal 10 no pid do pai > e > > ele só mostra a mensagem quando o sleep atual termina. > > Neste teste não consegui simular na prática a diferência entre ( " ) e ( > ' > > ) no trap. > > > > Obrigado. > > > > -- > > Marcus Vinícius > > > > ----- Mensagem original ---- > > De: Julio C. Neves <[EMAIL PROTECTED] <julio.neves%40gmail.com> < > julio.neves%40gmail.com>> > > Para: > > [email protected]<shell-script%40yahoogrupos.com.br><shell-script%40yahoogrupos.com.br> > > Enviadas: Segunda-feira, 7 de Janeiro de 2008 15:57:50 > > Assunto: Re: [shell-script] Trap do Bash ::: Abortar Comando > > > > Fala Marcus, > > > > o Shell lida com o trap em 2 momentos distintos: qdo ele o lê o coloca > em > > > > uma área de memória e qdo ele recebe o sinal e o executa. > > > > O que vc quer deve ser resolvido nesta primeira fase. Se os cmds do trap > > > > estiverem entre aspas ("), os cmds serão armazenados em memória já > > > > resolvidos; caso os mesmos cmds estiverem entre plics ('), estes cmds só > > > > serão resolvidos no momento que o sinal for recebido e assim sendo o PID > > > > gerado será o do filho. > > > > Assim sendo, o seu trap deveria ser: > > > > trap 'echo -e "\e[31;1mExecuçã o Interrompida. Saindo\e[m" ; echo $$: > > Sinal > > > > Identificado >> /tmp/morte.txt' 10 > > > > Espero que a explicação esteja boa, pois no meu livro falo sobre isso, > > porém > > > > não gosto da redação, pois acho que ninguém entende. > > > > Abração, > > > > Julio > > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Tiago B Peczenyj Linux User #405772 http://peczenyj.blogspot.com/ "what does not kill us makes us stronger" [As partes desta mensagem que não continham texto foram removidas]
