Group: linux.debian.user.french
From: fra-duf-no-spam@tourde.org (=?utf-8?Q?Fran=C3=A7ois?= TOURDE)
Date: Thursday, March 20, 2008 5:10 PM
Subject: Re: [HS] Vider un fichier pendant qu'un prog ecrit dedans

Le 13958i=C3=A8me jour apr=C3=A8s Epoch,
GiGGz =C3=A9crivait:

> Bonjour,
>
> D=C3=A9sol=C3=A9 c'est hors sujet.
> J'ai un programme qui calcul plein de truc et que j'ai lanc=C3=A9 depuis 1
> semaine, je ne veux donc pas l'arreter, ni le faire planter. Ce
> programme =C3=A9crit un fichier fort.68 (oui c'est cod=C3=A9 en fortran).=
Ce
> fichier fait =C3=A0 ce jour 1,2 GO et mon home se r=C3=A9duit =C3=A0 vue =
d'oeil (d'o=C3=B9
> ma panique).
>
> Comment faire pour vider ce fichier sans le d=C3=A9truire ? En effet j'ai
> essay=C3=A9 de faire une lien dont le nom =C3=A9tait le nom du fichier et=
dont
> la cible =C3=A9tait sur une autre partition, mais probl=C3=A8me : la cr=
=C3=A9ation du
> lien ne fut pas assez rapide, donc plantage du calcul (j'ai plusieurs
> calculs qui tournent). Apr=C3=A8s ce cuisant =C3=A9chec et la semaine de =
boulot
> perdu qui va avec, j'ai un peu peur de faire des b=C3=AAtises, d'o=C3=B9 =
ma
> d=C3=A9marche de venir ici vous demander...

(alternative en fin de message, tu peux zapper tout le d=C3=A9but si tu
veux)

Si mes souvenirs sont bons:

Tant que le fichier reste ouvert, tu vas avoir du mal... Petit
pr=C3=A9-requis: Une fois un fichier ouvert (en =C3=A9criture ou en lecture=
),
seul son inode a une existance pour le programme. Ni son nom, ni le
r=C3=A9pertoire dans lequel il se trouve n'a d'importance.

- Si tu fais un "rm": Le fichier deviens invisible pour tout le monde,
sauf pour ton programme qui =C3=A9crit dedans, et pour ta partition. En
gros, il bouffe de la place mais tu ne peux rien y faire.

- Si tu fais un "mv": Deux options:
- C'est sur la m=C3=AAme partition: Pas de soucis, le n=C2=B0 d'inode res=
te le
m=C3=AAme, ton fichier (et la partition associ=C3=A9e) continue(nt) de
grossir
- C'est sur une autre partition: =C3=87a fait comme un "cp" puis un "rm",
retour =C3=A0 la case d=C3=A9part.

- Si tu fais un ">": L=C3=A0, c'est un peu plus compliqu=C3=A9. Si ton prog=
ramme
=C3=A9crit en "append", il se peut (a v=C3=A9rifier selon le fs et autres
param=C3=A8tres que je ne ma=C3=AEtrise plus depuis trop longtemps) que t=
on
programme se remette =C3=A0 =C3=A9crire depuis 0, donc tu as gagn=C3=A9 (=
tout en
ayant perdu le contenu). Si il n'=C3=A9cris pas en append, mais qu'il est
en "w" seulement... je sais pas.

En gros, il serait pr=C3=A9f=C3=A9rable que tu modifie ton code fortran pour
qu'il referme de temps en temps le fichier, et si c'est pas possible
alors lance ton prog avec un "pipe" ou un "named pipe", de fa=C3=A7on =C3=
=A0 ce
que le second process (celui qui va effectivement =C3=A9crire sur le
disque) accepte de faire un close/open de son fichier de sortie.

*ALTERNATIVE*

Pourquoi ne pas d=C3=A9placer "tout le reste" et laisser le fichier
grossir? Tu cr=C3=A9es des liens symboliques pour toutes les choses de ton
/home qui peuvent =C3=AAtre d=C3=A9plac=C3=A9es, pour laisser grossir tranq=
uillement
ton fichier.

En esp=C3=A9rant n'avoir pas dit trop de conneries, et que =C3=A7a puisse a=
ider.

Safety Articles | Usenet Groups | Usenet News | Bluegrass