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

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

Re: [shell-script] Re: rodar via CRON ou DAEMON?


From: Julio C. Neves
Subject: Re: [shell-script] Re: rodar via CRON ou DAEMON?
Date: Thu, 29 Jul 2010 00:46:10 -0300

Eu acho que o assunto é bastante pertinente. Opessoal que usa shell
normalmente é admin e isso é um assunto interessante para qq admin que
mereça esse nome.

Eu tentaria uma coisa totalmente diferente, pois acho que compromete menos o
processador. Seguinte:

Script1
=======
mkfifo tubo
tail -f <(ls) > tubo

O processo do tail permanece em waiting enquanto não se cria arquivo e qdo
criá-lo ele será enviado para o named pipe.

Script2
=======
while :
do
    ArqNovo=$(cat tubo)
....
....
done

O named pipe precisa de um cara falando e outro ouvindo. Esse cat tubo
ligará um semáforo do S.O. e ficará esperando (sem onerar absolutamente
nada) a mudança deste semáforo que se dará qdo o outro processo "falar" do
outro lado do tubo e o que ele falou irá para a variável ArqNovo para que vc
possa trabalhar o dado da forma que vc quiser.

Se enquanto o script2 estiver trabalhando o dado, for criado um novo
arquivo, o script1 ficará em waiting até que termine o ciclo do while e o
prg volte para o cat.

Cara dê uma olhada em www.julioneves.com. Acho que a parte referente a named
pipe e substituição de processo [<(ls)] estão no Papo de Botequim 11. Lá tá
tudo mastigado e cheio de exemplos.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- SE turma de Shell/Zenity em 26/07 - address@hidden
- SP turma de Shell em 14/08 - www.4Linux.com.br
- Turmas fechadas em outras cidades ligue (21)8112-9988.


Em 28 de julho de 2010 12:43, Cristiano <address@hidden> escreveu:

>
>
>
>
> --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> Thiago Diniz da Silveira <thiagods.ti@...> escreveu
>
> >
> > Pela minha lógica ao deixar como daemon.. ele vai estar consumindo
> memória e
> > processamento o tempo todo.
> > Acho que a cron já está lá justamente para isso, só ela consome memória e
> > processamento menor do que se todos os scripts estivessem rodando como um
> > daemon, imagina 5 scripts rodando um sleep cada, e apenas um script só no
> > caso a cron rodando um time e verificando para cada script "cadastrado"
> em
> > sua lista a hora de rodar? aparentemente consome menos recursos, creio eu
> > que fique melhor usando a cron.
> >
> > Acho que só vale a pena deixar como daemon se for algo que precise
> realmente
> > estar funcionando o tempo todo, como um servidor de dns, web ou firewall.
> >
>
> Thiago, na realidade, a dúvida é mais conceitual que técnica.
>
> Não sei o que o bash (ou seria o kernel) com o script quando recebe o
> sleep, em termos de processador e memória.
>
> A questão que me pôs em dúvida é o que "custa" mais para o hardware, em um
> período de 24 horas. Executar via cron, de minuto em minuto, implica em
> rodar o mesmo script 1.440 vezes. Há portanto, 1.440 operações de I/O (o
> cron tem que acessar o disco 1.440 vezes a mais apenas para ler o código
> fonte, gerenciar memória - alocando e desalocando - 1.440 vezes). Já no
> daemon, haveria apenas 1 operação de I/O. Já que o código é pequeno (menos
> de 100 linhas), pouca memória estaria em uso e o I/O somente seria
> necessário quando o loop gira.
>
> Mas minha dúvida é justamente à respeito do sleep. Qual o ônus dele para a
> memória e o processador. Sai mais "barato" para as 1.440 execuções (com seus
> acessos a disco e operações de memória), ou mandar o programa 'dormir' por
> 1.440 vezes?
>
> Supondo que a execução dele dure 5 segundos. O que ocorre com o processador
> e memória nos outros 55 em que o comando sleep está rodando?
>
> Outra dúvida é à respeito do cron. Faz diferença para a máquina o fato de
> ter uma tarefa agendada de minuto (não o custo da execução da tarefa, mas a
> da verificação das tarefas à executar)?
>
> Virou off ou ainda é shell?
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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