Come eseguire il grep di un gruppo di file in un intervallo di tempo?


3

Sto cercando di scrivere uno script utilizzato su una casella buffer che esegue l'acquisizione di pacchetti completa del traffico di rete. Poiché è per una rete abbastanza grande, abbiamo suddiviso le acquisizioni in segmenti da 100 MB. In periodi di elevato traffico di rete per un periodo di un minuto avremo più PCAP che coprono quel periodo.

Quindi quello che voglio fare è avere uno script bash che consenta all'analista che sta cercando qualcosa di specificare una data e un'ora e quanti minuti entrambi i lati vogliono cercare i file. Ovviamente posso fare qualcosa del genere -

ls -al | grep "Dec  1" | grep 02:00
ls -al | grep "Dec  1" | grep 02:01

e così via, ottieni ogni risultato e grep ogni file singolarmente per la parola chiave specifica che sto cercando, ma mi piacerebbe essere in grado di fare una ricerca più ampia per tutti i file creati in un intervallo di tempo e quindi grep ciascuno di essi per la parola chiave.

Non sono del tutto sicuro di come farlo, qualsiasi aiuto sarebbe apprezzato.


Il findcomando è tuo amico, specialmente i -ctime, -mtimee / o -neweropzioni. Fai un man findper maggiori dettagli.
Eric

Sì, ho cercato di usare find, ma funziona solo in pochi giorni. Abbiamo acquisito al 100% sulla rete per 30 giorni, con una media forse, non so ... migliaia di segmenti da 100 MB al giorno. Effettuare ricerche per giorni di pacchetti metterà a dura prova un sistema già pesantemente caricato.
Steve,

1
Cullato da man find: -ctime n [smhdw] s secondo m minuto (60 secondi) h ora (60 minuti) d giorno (24 ore) w settimana (7 giorni) Quindi puoi specificare le unità
Eric

Devo cercare i file in un intervallo di volte in una data specifica. Di 'tra le 23:20 e le 23:30 il 3 novembre.
Steve

1
Ecco un metodo che utilizza find: aaronbonner.io/post/28969404367/… (ometti semplicemente la parte di eliminazione del corso).
MaQleod,

Risposte:


1

Alcune delle cose belle find(su GNU / Linux) possono fare per te:

unità:

  • nesattamente n untis
  • -nmeno di n unità
  • +npiù di n unità -

Quello che è successo:

  • -atime: ultimo accesso
  • -ctime: modifiche al file stesso (autorizzazioni, proprietari, ...), non al suo contenuto
  • -mtime: contenuto del file modificato
  • -amin n: n minuti di età
  • -atime n: n giorni (24 ore) fa
  • lo stesso vale per ctime/mine mtime/min)

Così:

  • find -atime -30 → ultimo accesso meno di 30 giorni fa
  • find -ctime +5 → più di 5 giorni fa, modifiche al file stesso
  • find -mtime +2 -31 → il contenuto del file è cambiato più di due giorni ma meno di 31 giorni fa

anche - -daystart: dopo oggi, 0.00h


grep

find roba -exec grep {} \; →; l'ultima parte ( {} \;) è essenziale: attenzione al singolo spazio bianco tra {}e\;

Le -execopzioni consentono di incorporare altri comandi infind


Inoltre: perché non si dovrebbe analizzare l'output dils


1

trova -iname "" -mtime -7 -exec zgrep "" {} \;

Per

find / opt / WebSphere / AppServer / profiles / application / logs / -iname "SystemOut *" -mtime -7 -exec zgrep "FileNotFoundException" {} \;

Troverà nella directory / opt / WebSphere / AppServer / profiles / application / logs / per i file che iniziano con SystemOut negli ultimi 7 giorni e cercherà String FileNotFoundException.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.