precis som alla andra operativsystem har GNU/Linux implementerat en minneshantering effektivt och ännu mer än så. Men om någon process äter bort ditt minne och du vill rensa det, ger Linux ett sätt att spola eller rensa ram-cache.
hur rensar du Cache i Linux?
varje Linux-System har tre alternativ för att rensa cache utan att avbryta några processer eller tjänster.
1. Rensa endast Sidcache.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Tydliga dentrier och inoder.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Rensa Sidcache, dentries och inoder.
# sync; echo 3 > /proc/sys/vm/drop_caches
förklaring av ovanstående kommando.
sync kommer att spola filsystemets buffert. Kommando separerat med ";”
kör sekventiellt. Skalet väntar på att varje kommando avslutas innan nästa kommando körs i sekvensen. Som nämnts i kärndokumentation kommer skrivning till drop_cache att rengöra cache utan att döda någon applikation/tjänst, command echo gör jobbet med att skriva till fil.
Om du måste rensa diskcachen är det första kommandot säkrast i företag och produktion som "...echo 1 > ….”
rensar bara Sidcachen. Det rekommenderas inte att använda tredje alternativet ovan "...echo 3 >”
I produktion tills du vet vad du gör, eftersom det kommer att rensa PageCache, dentries och inodes.
är det bra att frigöra buffert och Cache i Linux som kan användas av Linux Kernel?
När du tillämpar olika inställningar och vill kontrollera, om det faktiskt implementeras speciellt på I/O-omfattande riktmärke, kan du behöva rensa buffertcache. Du kan släppa cache som förklarats ovan utan att starta om systemet, dvs ingen driftstopp krävs.
Linux är utformat på ett sådant sätt att det tittar in i diskcachen innan du tittar på disken. Om den hittar resursen i cacheminnet når begäran inte disken. Om vi rengör cacheminnet kommer diskcachen att vara mindre användbar eftersom operativsystemet letar efter resursen på disken.
Dessutom kommer det också att sakta ner systemet i några sekunder medan cachen rengörs och varje resurs som krävs av OS laddas igen i diskcachen.
Nu kommer vi att skapa ett skalskript för att automatiskt rensa RAM-cache dagligen klockan 2 via en cron scheduler-uppgift. Skapa ett skalskript clearcache.sh och Lägg till följande rader.
#!/bin/bash# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"echo "echo 3 > /proc/sys/vm/drop_caches"
Set kör behörighet på clearcache.sh fil.
# chmod 755 clearcache.sh
Nu kan du ringa skriptet när du behöver rensa ram-cache.
Ställ nu in en cron för att rensa RAM-cache varje dag klockan 2. Öppna crontab för redigering.
# crontab -e
Lägg till raden nedan, spara och avsluta för att köra den klockan 2 dagligen.
0 2 * * * /path/to/clearcache.sh
För mer information om hur du cron ett jobb kanske du vill kolla vår artikel om 11 Cron schemaläggning jobb.
är det bra att automatiskt rensa RAM-cache på produktionsservern?
Nej! det är det inte. Tänk på en situation när du har planerat skriptet för att rensa ram-cache varje dag klockan 2. Varje dag klockan 2 körs skriptet och det spolar din RAM-cache. En dag av någon anledning, kan vara mer än väntat användare är online på din webbplats och söker resurs från din server.
samtidigt schemalagda script kör och rensar allt i cache. Nu hämtar alla användare data från disken. Det kommer att resultera i serverkrasch och korrumpera databasen. Så klart ram-cache endast när det behövs, och känt din fot steg, annars är du en last kult Systemadministratör.
hur rensar du växlingsutrymme i Linux?
Om du vill rensa växlingsutrymme kanske du vill köra kommandot nedan.
# swapoff -a && swapon -a
Du kan också lägga till ovanstående kommando till ett cron-skript ovan, efter att ha förstått all tillhörande risk.
Nu kommer vi att kombinera båda ovanstående kommandon till ett enda kommando för att göra ett ordentligt skript för att rensa RAM-Cache och byta Utrymme.
# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'OR$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root
Efter att ha testat båda ovanstående kommando kör vi kommandot” free-h ” före och efter att ha kört skriptet och kommer att kontrollera cacheminnet.