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

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

RES: [shell-script] lance estranho


From: Rodolfo Villanova
Subject: RES: [shell-script] lance estranho
Date: Thu, 20 Mar 2003 10:21:54 -0300

Amigos,

Talvez o professor Julio Neves possa nos dar uma definição mais precisa
tecnicamente sobre essa aparente "magia negra", mas mesmo assim vou "pôr
minha pitada nesse caldeirão".

Numa explicação simplista, o princípio que rege o fato de ser possivel
modificar um arquivo mesmo que ele tenha sido aparentemente removido do File
System é que o processo shell-pai mantém o vínculo com o arquivo pelo seu
identificador no sistema, mesmo que o nome do referido arquivo tenha sido
removido por um subshell.

Um exemplo clássico que ocorre diariamente nos servidores com que trabalho
diz respeito à política de remoção de arquivos inúteis do disco com o
objetivo de liberar espaço.
Enquanto os arquivos removidos possuirem pelo menos um processo atrelado ao
arquivo, o espaço ocupado por esse arquivo não será disponibilizado até que
o último processo ativo vinculado a esses arquivos encerre sua execução. E
se esses arquivos não forem liberados nunca, indefinidamente eles
continuarão a "inchar lá" no disco.

Por uma questão de ilustração, pode-se verificar se um arquivo está aberto
(vinculado a um processo ativo) utilizando-se o comando fuser <arquivo>.


Grato pela atenção,


Rodolfo Villanova
TmS Brasil


-----Mensagem original-----
De: Flavio Villalva Civatti [mailto:address@hidden]
Enviada em: quinta-feira, 20 de março de 2003 09:25
Para: address@hidden
Assunto: Re: [shell-script] lance estranho


On Wed, 19 Mar 2003, Ulysses Almeida wrote:

> On Wed, Mar 19, 2003 at 07:49:19PM -0300, aurelio wrote:

[...]

> > # (rm -f lixo ; sed 's/^/---/' > lixo) < lixo

[...]

> > sed fazendo edição "in-place" só usando redirecionamento e
> > magia negra :)
>
> WOW mesmo...
> se eu fizer algo do tipo comando > arq, ele nao cria/re-faz esse
> arquivo? intaum pq tenho que apagar ele antes? No que os parenteses
> influenciam?

  Em tudo! A magia negra está neles...

> Realmente parece magia negra.....
>
> > no linux funcionou, no cygwin não.
> >
> > eu não manjo lhufas de kernel então não sei direito como isso
> > funciona, só tenho uma leve idéia, mas achei muito bacana.
>
> Mas isso tem mais a ver com o interpretador de comando do que com o
> kernel, nao? nesse caso seriam caracteristicas obscuras do bash, que
> podem ser enquadrados nos fenomenos da para-computacao!

  Não é só do bash, testei com ksh e sh... funciona também!

  O cara que mostrou isto (Björn) deu uma pequena explicação que o
Aurélio pode ter deixado passar despercebida:

  "The method relies on the fact that a file is not unlinked as long as
it is being accessed"

  Como os parenteses criam um subshell, acredito que o shell pai
mantenha uma imagem do arquivo que é usada como entrada para o sed até
que o subshell devolva o controle e o resultado... o arquivo alterado!





reply via email to

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