Newsgroup: it.comp.os.linux.iniziare
Titolo: log file troppo lungo

Ho scritto e uso gi� da tempo alcuni script per calcolare quanto
traffico internet ho prodotto a partire da una certa data.
Sostanzialmente tutto l'accrocchio si basa sul parse di un file
di log, nella fattispecie "/var/log/ppp".
Il formato di ogni riga del file � del tipo:
Jun 19 10:29:48 pppd[8385]: Using interface ppp0
Ovvero manca l'anno.
Bont� sua questo log si � riempito a partire da un annetto f� e
proprio pochi giorni addietro mi sono ritrovato per esempio
"Mar 30"
che appare sia all'inizio che alla fine del file di log.
Ovviamente, Ma ci sono arrivato solo dopo diversi controlli, si
tratta del Marzo 2009 per le righe iniziali del file e Marzo 2010
per quelle pi� vicine alla fine del file.
Ora, il mio script trova il traffico di ogni sessione dialup via
"ppp0" e somma bytes ricevuti inviati in modo da ottenere il
totale traffico dati "a partire da" una certa data.
Ultimamente la data diinzio che mi interessava era proprio
intorno al 30 Marzo:
lo script ha trovato "Mar 30" nelle prie righe del file e ha cos�
sommato tutte le righe successive per la somma dei dati
scambiati.
In pratica ha trovato il traffico relativo all'ultimo anno.
Siccome penso che un anno di log mi possa pi� che avanzare (anche
3 mesi a dirla tutta), come potrei tagliare automaticamente tale
file di log affinch� abbia dimensioni pi� consone al suo uso e
soprattutto che non consentano la presenza di mesi omonimi ma
corrispondenti ad anni differenti?
Per ora me la sono cavata cancellando a mano con vi le prime
righe a botte di "10000dd"...
E in effetti ora il traffico riportato segna giusto.
Ma volendo automatizzare la cosa?
Ho visto molto superficialmente il man di logrotate.
Effettivamente ha a che fare con il mio problema, anche se vedo
che si basa sulla dimensione del file di log... non sulla data da
considerare obsoleta (e d'altra parte neanche nel log viene
citato l'anno dei records, ma solo il mese).
Avreste qualche consiglio?
Forse conviene in ogni caso calcolare ad occhio la dimensione del
log? Ma non si sa mai, non vorrei perdere parti del file che
servono per fare funzionare quello script (intendo in caso di
anomalo accrescimento del file di log).
PS
mi viene in mente ora che magari c'� il modo di trovare il record
Mar 31 partendo dalla fine del file, in tal modo quello sarebbe
effettivamente l'ultimo mese di marzo e non quello dell'anno
scorso. Potrei modificare lo script in tal senso... potrebbe
anche non essere cos� immediato per come l'ho creato: ora trova
il numero della riga da cui iniziare a considerare le successive
con:
num=$(grep -n "${STARTDAY}" $LOGFILE|head -n1|sed 's/:.*//')

 Avreste qualche consiglio?
Leggere ***ATTENTAMENTE*** i manuali di logrotate prestando 
***MOLTA*** attenzione alle direttive montly e yearly.

 man syslog
Grazie  :-)

 Di solito i file di log vengono automaticamente 'ruotati' da
Ah, scusa l'ignoranza, ma cosa s'intende di preciso "ruotati"?
Cioč, vengono cancellati e ricreati vuoti, oppure vengono loro
tagliate le prime righe (quelle relative ad eventi piů antichi
per capirci), o cos'altro?
Inoltre mi viene un altro dubbio:
Non tengo quasi mai il pc acceso durante la notte, come si
comportebbe in questa situazione la rotazione dei log?

 ***MOLTA*** attenzione alle direttive montly e yearly.
Grazie  :-)

 per capirci), o cos'altro?
vengono spostati in un altro fine con in genere la data di spostamento 
nel nome e, successivamente, vengono compressi. come sicuramente saprai, 
i file di testo si comprimo anche del 90% e quindi si evitano inutili 
sprechi.
ciao.


Si, ma il file originale /var/log/ppp per esempio, viene ricreato
completamente vuoto?


si.

 si.
Ecco, allora il mio script non funzionerebbe piů in seguito alla
rotazione di quel file di log...
Pertanto logrotate che sembrava la soluzione al problema, si
rivela invece causa di un non funzionamento totale.
Ricordo come avevo accennato sopra, che tale script rielabora il
file di log /var/log/ppp effettuando operazioni di ricerca con
grep, modifica con sed ecc. Il problema sorge perchč vi sono
due differenti mesi di Aprile, quello attuale e quello dello
scorso anno.
Una soluzione č quella di tagliare le prime tot righe in modo da
considerare gli eventi non troppo vecchi (tre mesi andrebbero piů
che bene).
Potrei anche farlo semplicemente a mano, tanto č un'operazione
che se la faccio oggi poi sono apposto fino a gennaio 2011...
Certo, le soluzioni automatizzate sono da preferire.
Ma a me pare che in questo caso non ci siano molte alternative, a
meno di non modificare in qualche modo lo script...