Gå til innhold

Logfiler - hente og slette uten tap


Anbefalte innlegg

Hvordan kan jeg flytte innholdet av en logfil til en annen fil, og fjerne de linjene som har blitt hentet ut, uten at noe går tap, og heller ikke blir dobbeltlagret?

 

Problemer som dukker opp:

Hvis man bruker mv for å gi loggfila nytt navn, kan man risikere å lage problemer for programmer som var i ferd med å skrive til fila i det den ble flyttet.

Om man bruker cp og deretter rm (eller echo "" > logfil) vil det som har blitt skrevet til loggen mellom tidspunktet for kopi og tidspunktet for sletting.

Om man bare bruker cp, uten rm får man dobbelt lagring.

 

Hva er trikset?

Lenke til kommentar
Videoannonse
Annonse

En mulighet som muligens kan fungere er å ta nåværene tidspunkt, trekke fra ett minutt og ignorere sekunder. Så kjører man 'sed', og lister ut alle linjer fra start av fila og ned til det gitte tidspunktet. Deretter kjøre en sed -i og slette de samme linjene.

 

Litt usikker på hvordan sed -i oppfører seg mens det blir skrevet til filen den endrer på. Vil det som skrives til fila mens den jobber forsvinne?

 

-------Edit: lagt til ---

På linken DidzisK postet har de brukt en symlink som endres. Det er kanskje ikke så dum løsning? Hvis et program skriver til en fil linket i en symlink så vil det vel fortsette og skrive til den samme fila selv om symlinken endres? Og neste gang det skal skrives noe til fila vil den lese symlinken først, og dermed skrive til en annen fil. Stemmer dette, eller blir det samme problemet her som med cp-rm-metoden?

Endret av petterg
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...