reminett Skrevet 31. januar 2011 Del Skrevet 31. januar 2011 Hallo alle Linux-venner Hvordan lager jeg et script som alltid sørger for at f. eks. mappen /mnt/bildebank er under 30 000MB? Altså, mappen skal til enhver tid inneholde kun 30 000MB med nye bilder. De eldste skal slettes. Scriptet kjøres hvert 3. minutt (sammen med scriptet som lagrer et nytt bilde). Jeg bruker cron til den jobben. Tusen takk for alle innspill Lenke til kommentar
DevilsDecoy Skrevet 31. januar 2011 Del Skrevet 31. januar 2011 Noe som dette er en start: while [ `du --max-depth=0 -b $FOLDER | cut -f1` -gt $SIZE ]; do rm $FOLDER/"`ls -t $FOLDER | tail -n 1`"; done Potensielle problemer: * Takler neppe mellomrom i mappenavn * Undermapper fører nok til evig løkke når den er eldst * Sikkert mer Lenke til kommentar
Kaptein... Skrevet 31. januar 2011 Del Skrevet 31. januar 2011 For å repetere oppgave hvert 3. minutt oppretter du en 'cron job'. http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/ Lenke til kommentar
reminett Skrevet 1. februar 2011 Forfatter Del Skrevet 1. februar 2011 Tusen takk!! Alle bildene kommer til å ha sammenhengende navn, og ligge i én og samme mappe. Kan jeg bry deg med å be om forklaring på hva alle de forskjellige tingene gjør? Hadde vært knall! Lenke til kommentar
HawP Skrevet 1. februar 2011 Del Skrevet 1. februar 2011 Jeg kan gi en kjapp forklaring... while sålenge... [ `du --max-depth=0 -b $FOLDER | cut -f1` -gt $SIZE ]; do ...summen av filene i mappa som variabelen FOLDER "peker" på er større enn SIZE bytes... "du" returnerer summen av filene i FOLDER (--max-depth=0) i bytes (-b) "cut" returnerer i dette tilfellet første felt ("kolonne"), -f1, som er antall bytes ` ` gjør at det som står imellom skal kjøres (som en kommando) og resultatet returneres, i dette tilfelle inngår resultatet i en expression for å sjekke om det er større (-gt) enn SIZE. rm $FOLDER/"`ls -t $FOLDER | tail -n 1`"; ...slett eldste fil i mappa. Igjen så kjøres en kommando; list alle filer (ls) i kronologisk rekkelfølge med eldste sist (-t) og plukk ut siste (tail -n 1), denne returneres og blir filnavnet i rm kommandoen (blir da rm $FOLDER/fil) done ..."gå tilbake" og sjekk om mappa fortsatt inneholder mer enn SIZE bytes totalt. Potensielle problemer: * Takler neppe mellomrom i mappenavn Ved å flytte litt på hvor " plasseres bør mellomrom i mappenavn kunne håndteres. [ `du --max-depth=0 -b "$FOLDER" | cut -f1` -gt $SIZE ] og rm "$FOLDER/`ls -t $FOLDER | tail -n 1`" 1 Lenke til kommentar
reminett Skrevet 1. februar 2011 Forfatter Del Skrevet 1. februar 2011 Tusen hjertelig takk, HawP Dette satt jeg stor pris på, og jeg lærte mye nå! Ha en strålende ettermiddag Lenke til kommentar
reminett Skrevet 2. februar 2011 Forfatter Del Skrevet 2. februar 2011 Tok det i bruk i dag, og fungerte utmerket Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå