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

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

RES: [shell-script] Como saber se meu shell já está executando?


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Como saber se meu shell já está executando?
Date: Wed, 16 Mar 2005 11:21:46 -0300

Grande Felipe,
é muito bom tê-lo de volta. Pessoal, o Felipe é fera em Shell e andava
sumido da lista!

Eu nunca tive problemas com uso de named pipes para simular lock. O que faço
é um daemon que fica em um loop perpétuo e a 1a. isntuçaõ do loop é um cat
/named/pipe e deste modo recebe o registro para trabalhar. Outra pessoa que
necessite trabalhar com o arquivo que está sendo alterado pelo daemon, só o
conseguirá qdo o loop voltar ao cat inicial e isso só se dará após o término
da atualização.

Outro uso bacana é em um CGI para contar hits em sites, que procede de
maneira semelhante ao que descrevi acima para evitar a perda de hits
simultâneos de 2 ou mais pessoas.

[ ]s,
Julio Cezar Neves
- Gerente do Programa de Software Livre -
Tel:+55 21 2528-7070 / +55 21 8112-9988
Fax: +55 21 2528-7646
mailto:address@hidden


| -----Mensagem original-----
| De: Felipe Kellermann [mailto:address@hidden]
| Enviada em: terça-feira, 15 de março de 2005 19:14
| Para: address@hidden
| Assunto: Re: [shell-script] Como saber se meu shell já está 
| executando?
| 
| 
| 
| On Tue, 15 Mar 2005 5:57pm  -0300, Julio Cezar Neves - 
| DATAPREVRJ wrote:
| 
| > ter 100% de segurança é muito dificil! Qdo tiver um tempo 
| vou tentar bolar
| > uma solução usando named pipe, que eu já uso com freqüência 
| para simular um
| > lock.
| >
| > Aê pessoal! Vê se dá para sair uma solução por este caminho.
| 
| Tradicionalmente se usa o lockfile. Vem junto com procmail/formail.
| Lembro que existe um ou outro projeto mais específico para isso.
| 
| Para esses tipos de coisas eu sempre recomendaria algum 
| software que é, em 
| teoria, "não portável". Como eles ficaram, infelizmente, fora 
| dos padrões, 
| eu acho que é interessante difundir e incentivar o uso 
| (p.ex., do mktemp).
| 
| Um exemplo simples:
| $ locked.sh
| lock: lock-15650
|   processo a: Ter Mar 15 19:01:43 BRT 2005
|    coisas do processo a...
|   processo a: Ter Mar 15 19:01:46 BRT 2005
|   processo b: Ter Mar 15 19:01:51 BRT 2005
|    coisas do processo b...
|   processo b: Ter Mar 15 19:01:52 BRT 2005
| $
| 
| 
| Este é o exemplo:
| $ cat locked.sh
| #!/bin/sh
| 
| lock=lock-$$
| 
| function proc_a {
|          lockfile $lock
|          printf " processo a: %s\n" "$(date)"
|          printf "  coisas do processo a...\n"
|          sleep 3
|          rm -f $lock
|          printf " processo a: %s\n" "$(date)"
| }
| 
| function proc_b {
|          lockfile $lock
|          printf " processo b: %s\n" "$(date)"
|          printf "  coisas do processo b...\n"
|          sleep 1
|          rm -f $lock
|          printf " processo b: %s\n" "$(date)"
| }
| 
| printf "lock: %s\n" $lock
| proc_a &
| proc_b &
| wait
| $
| 
| Não sei se named pipes seriam interessantes. A possibilidade 
| de tu acabar 
| com algum processo esperando indefinidamente é grande e 
| natural. Ou existe 
| alguma dica especial?
| 
| -- 
| Felipe Kellermann
| 
| [As partes desta mensagem que não continham texto foram removidas]
| 
| 
| 
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de 
| programação, como perl, C etc. Quem insistir em não seguir 
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 




reply via email to

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