Newsgroup: it.comp.os.linux.sys
Titolo: FIFO Buffer

Ciao a tutti.
Esiste un modo per creare uno pseudo-file/pseudo-device di una data
dimensione che non si riempie mai?
Mi spiego (se ci riesco).
Devo creare un file /tmp/ciccio.log di 50MB e devo potergli scrivere
dentro all'infinito, quando i 50MB sono raggiunti, lui deve iniziare a
sfalciare via i primi dati che sono entrati, una sorta di buffer
circolare....
Quindi, questo:
# cat /dev/zero > /tmp/ciccio.log
deve andare avanti all'infinito, ed il file sarà sempre di 50MB.

 Ma usare /dev/null pare brutto?
Si, perchè io non voglio buttare via niente.
Ho bisogno di avere un file di 50MB 'leggibile' a posteriori.
Potrei fare una named pipe, ma in tal caso dovrei aver sempre un
programmino che sta li a leggere.
In pratica devo loggare con una dimensione massima ben precisa,
superata la quale, i dati più vecchi vengono eliminati.

 superata la quale, i dati più vecchi vengono eliminati.
logrotate?
-- 
Fa freddo nello scriptorium, il pollice mi duole. Lascio questa
scrittura, non so per chi, non so più intorno a che cosa...
U. Eco

 logrotate?
No.
Allora, diciamo che sto facendo prove (inutili) su una specie di
sistema embed. Non ho logrotate (no, non lo installo) e volevo una
cosa completamente trasparente da far girare in un ramdisk e 'dumpare'
ogni tanto su hdd.
Ho trovato emlog che sembra faccia proprio al caso mio: si crea un
device emlog di una data dimensione (ad esempio 50MB) e si fa loggare
su quel device anzichè su un file.
Il contenuto sarà sempre e solo di massimo 50MB e tot tempo posso fare
un bel "cat /dev/mio_device > /var/log/dump"
Ma più probabilmente starò senza dump. Il ringbuffer mi serve solo per
non far riempire la ram in caso di problemi (log a manetta) e quindi
occupare sempre e solo 50MB. Poi appena si spegne il computer si
riparte da zero.
Domanda scema: i cisco hanno una CF con lo IOS dentro. I log non li
salvano giusto? O scrivono sulla CF?

 salvano giusto? O scrivono sulla CF?
se vuoi puoi configurare un ringbuffer da guardare a comand, di XXXXXX
bytes. altrimenti ti vedi i log in console o in telnet/ssh se li hai
abilitati. puoi anche inviarli via rete come eventi syslog ad un syslog
server. i piu' recenti hanno la possibilità di sopprimere dei messaggi e/o
gestire la velocità di output. va da se che in quei casi alcuni eventi li
perdi.
per il debugging stessa cosa, va a finire nel calane del log che prevede
anche il livello "debugging"
Andrea

 bytes.
Esattamente quello che voglio fare io.
Ho trovato un modulo del kernel o addirittura uno script in perl che
fanno
qualcosa di simile, ma speravo fosse presente qualche comando e/o
qualche
modulo del kernel già integrato.

Alessandro ha scritto:

Per i miei sistemi su CompactFlash, uso sempre OpenWRT come 
distribuzione. Hanno già risolto tutti questi problemi.
Leandro

 distribuzione. Hanno già risolto tutti questi problemi.
E che gusto c'è dopo? Se fan tutto gli altri... :)
Sto semplicemente facendo esperimenti, niente di importante. Son solo
curioso di vedere come poter implementare una micro distro su CF....
Altro scoglio è quello di far girare debian interamente in ram in modo
da poter
smontare la CF.
Così facendo si può accendere/spegnere la macchina senza alcun rischio
di incosistenza dei dati
dato che girerebbe tutto in ram e/o in readonly su compact flash.

 dato che girerebbe tutto in ram e/o in readonly su compact flash.
apt-get install flashybrid
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.


Da provare...
1) crea una FIFO in cui scrivere
2) crea un file da 50 MB da cui leggere
3) scrivi un daemon che legge dal FIFO e scrive nel file, gestendo la 
circolarita` dei dati
Pero` io lascerei perdere i files e userei un blocco di memoria condivisa ;-)
In alternativa googla per "rrdtool"...
Ciao,
-- 
        Roberto Divia`              Love at first sight is one of the greatest
Dep:PH Bat:53 Mailbox:C02110      labour-saving devices the world has ever seen
Route de Meyrin 385               ---------------------------------------------
Case Postale                                Phone:  
+41-22-767-4994
CH-1211 Geneve 23 CERN                      Fax:    
+41-22-767-9585
Switzerland                                 E-Mail: 
Robert...@cern.ch

 In alternativa googla per "rrdtool"...
Quello dei grafici? In che modo mi può tornare utile per gestire dei
log?

 log?
Prendi solo la parte relativa al logging.


 Ho bisogno di avere un file di 50MB 'leggibile' a posteriori.
memcached?
imposti la dimensione a 50 Mb e dai expire 0
dovrebbe fare al caso tuo credo
-- 
Well everybody's heard about the bird 
 Bird is the word
  Don't you know about the bird well everybody knows that the bird is a word
Bird is a word

 indice al contenuto del file. Piu` facile a dirsi che a farsi, probabilmente.
Non ne vale assolutamente la pena.
Ho trovato due metodi differenti per fare quello che chiedo:
emlog, un modulo del kernel che crea appundo device in round buffer
oppure
un programmino in perl che non mi ricordo come funziona ma fa la
stessa cosa.
Usare altre soluzioni non avrebbe senso, tanto vale usare emlog.
Strano che però non ci sia qualcosa di nativo per fare un ringbuffer.
Farebbe comodo una sorta di mkfifo...