shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Trap do Bash ::: Abortar Comando


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Trap do Bash ::: Abortar Comando
Date: Mon, 7 Jan 2008 17:24:24 -0200

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 <address@hidden> 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 <address@hidden<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 <address@hidden <julio.neves%40gmail.com> <
> julio.neves%40gmail.com>>
> > Para: 
> > address@hidden<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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]