Pagina 1 di 1

svuotare un file in uso

Inviato: mer 15 giu 2011 10:56 pm
da noxjohn
avrei bisogno di far eseguire un operazione a un sistema UNIX di svuotare un file in uso.

per ora lo script è così composto:

cat /directory/nomefileinuso > /directory/filediarchiviazione
cat /directory/filevuoto > /directory/nomefileinuso

ma il file in uso continua a mantenere in memoria le informazioni che aveva fino a quel momento.

La cosa secondo voi potrebbe cambiare usando come file vuoto

/dev/null


oppure

/dev/zero

Da considerare che non posso cancellare il file e dargli lo stesso nome perchè mi cambierebbe i-node e non funzionerebbe + il sistema di archiviazione.

Avevo pensato anche a una sottrazione del contenuto dei 2 file in modo da averne uno con le sole informazioni da quel momento in poi, ma non so se ne esiste un comando per farlo.

HELP ME....

Inviato: mar 05 lug 2011 12:13 pm
da Orso
cat visualizza il contenuto del file; > reindirizza l'output di un qualsiasi comando su un file. Per cui così facendo stai duplicando il contenuto del primo file.

Per ottenere lo "svuotamento" del primo file direi che hai due possibilità:
1)
- crei un file nuovo vuoto
- rinomini quello vecchio in *.old (o come preferisci tu)
- rinomini il file vuoto col nome di quello pieno
Questo però non sempre funziona: se il file pieno è in uso, il sistema potrebbe impedirne il rename.
2)
- utilizzi cat ma non con > bensì con <, cioè reindirizzi l'output (di un file vuoto) sul file che vuoi svuotare.

Ora provo un po' di cosette e poi ti dico....

Inviato: mar 05 lug 2011 12:30 pm
da Orso
cat /dev/null > tuofile
funziona!
L'unico "problema" è il proprietario del processo che tiene aperto il file e quello che esegue il cat. Se fai cat come root non dovresti avere problemi

Inviato: mar 05 lug 2011 4:07 pm
da noxjohn
Provato, ma il problema è che si svuota per un attimo e poi è al punto di prima come se non fosse mai stato svuotato.
provato anche a killare il processo e a reinizializzarlo, ma purtroppo fa parte di una catena di processi e in fase di riavvio non mi torna in linea con gli altri processi.
per chiudere e riaprire il processo il sistema aspetta un segnale (manuale) che non sono riuscito a capire che processo attiva e se posso simularlo o meno, perchè fa parte di un altro sistema operativo in uso negli anni 50/60 e di cui non esistono manuali. Attualmente questo sistema è emulato, ma non riesco a comprenderlo fino in fondo.
per questo motivo sto cercando di aggirarlo.
grazie dei suggerimenti.