![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
Moderatore
Data di registrazione: May 2006
Ubicazione: Varese
Messaggi: 1,271
|
tail e grep non sono più in tempo reale
Buondì,
ho sempre usato un comando ti questo tipo tail -f nomelog.log | grep -v 'http://www.' | grep -v 'favicon.ico' e non ho mai avuto problemi. Attualmente il comando mi si esegue a cadenza oraria. In pratica se faccio solo il tail senza il grep vedo il log quasi in tempo reale, se aggiungo il grep mi sbrodola il log alla cadenza dell'ora. Forse vuole riempire un buffer? Chi mi svela questo mistero o mi consiglia un altro modo per ottenere lo stesso risultato? Tutto è successo dopo l'ultimo aggiornamento del sistema, con le varie librerie. |
|
|
|
|
|
|
|
#4 (permalink) |
|
User
Data di registrazione: Nov 2006
Ubicazione: Pompeiana
Messaggi: 103
|
Prima domandina: hai capito se la magagna la dobbiamo cercare nel tail o nel grep?
Se fai tail -f senza | grep .... vedi un output "regolare" o a botte di un'ora per volta? Se il flusso in output è quello atteso allora ci focalizziamo sul grep. Un dubbio: il grep -v 'http: // www .' non becca anche l'URL chiamato dai client? Ciao |
|
|
|
|
|
#5 (permalink) |
|
Moderatore
Data di registrazione: May 2006
Ubicazione: Varese
Messaggi: 1,271
|
Allora, il log con il tail -f ha un piccolo ritardo, qualche secondo con la diretta, ma penso sia normale.
Se metto un solo grep "frequente" tipo '" 200' mi sembra sia ok, ma perchè il buffer lo riempe subito. Se concanteno i due grep mi prende praticamente solo i referrer esterni, quindi mi si riempe il buffer in mezz'ora circa. Mi sono guardato l'opzione -n di grep che riporta -n, --line-number print line number with output lines --line-buffered flush output on every line Però non capisco come ad attivare il flush on ad ogni linea, con solo -n non pare funzionare. grep -v -n 'http://www' per intenderci. |
|
Ultima modifica di Wolf Otakar : 12-05-09 19:48. Motivo: Uso delle Maiuscole! |
|
|
|
|
|
|
#6 (permalink) |
|
User
Data di registrazione: Nov 2006
Ubicazione: Pompeiana
Messaggi: 103
|
...ritardo di qualche secondo per tail -f? Immagino allora che il file di log sia molto grande ...
Sei sicuro di avere risorse sufficienti quando concateni i due grep? Se apri una shell ulteriore per guardare con "top" l'uso di CPU e memoria mentre fai partire il tail -f |grep ... cosa vedi? Se fai cat /proc/loadavg che cosa ti dice? Ciao ![]() |
|
Ultima modifica di Wolf Otakar : 12-05-09 19:48. Motivo: Quote inutile. |
|
|
|
|
|
|
#7 (permalink) |
|
Moderatore
Data di registrazione: May 2006
Ubicazione: Varese
Messaggi: 1,271
|
No ho 200 Mb di ram libera e l'occupazione media è dello 0%
![]() Penso che sia la gestione delle statistiche che rallenta la creazione del log. Ho riprovato a gestire il parametro -n, e ho azzardato un -- tail -f file.log | grep --line-buffered -v 'http://www' | grep --line-buffered -v 'favicon.ico' e tutto sembra tornato normale. Quasi che sia cambiata una preferenza di consolle, non saprei. Esiste un modo di rendere di default il parametro --line-buffered con tutti i grep? Non so quale libreria sia stata aggiornata con l'ultimo update, ma devono avere toppato loro (o forse era toppato prima ) |
|
|
|