Kako varno očistiti strežnik Linux, ne da bi motili delovanje storitev | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Kako varno očistiti strežnik Linux, ne da bi motili delovanje storitev

Raven: Srednje napredna (proizvodni sistemi)
Predviden čas: ~30 minut
Cilj: Osvoboditi prostor na disku na strežniku Linux z odstranitvijo neuporabljanih paketov, starih jedr, zastarelih dnevnikov in datotek v predpomnilniku – brez prekinitve delovanja katerih koli storitev.

Ta vodnik predpostavlja dostop prek SSH do produkcijskega ali produkcijsko podobnega VPS-a. Ne izvajajte tega slepo na kritičnih sistemih brez varnostnih posnetkov.

Uvod

Sčasoma se tudi na redko uporabljanem VPS-ju nabere nepotrebna obremenitev: osiroteli paketi, zastarela jedra, gigabajti dnevnikov, ki niso bili izbrisani, in ostanki predpomnilnika paketov. Če tega ne preverite, bo poln disk povzročil sesutje vašega spletnega strežnika, prekinil pisanje v bazo podatkov in napolnil vašo poštno vrsto. Ta vodnik za čiščenje sistema Linux vas vodi skozi varno čiščenje strežnika Linux – najprej preverite porabo prostora na disku, odstranite tisto, kar je varno odstraniti, in preverite, ali so vaše storitve preživele proces. Vsak ukaz v tem vodniku je varen za izvajanje na aktivnem strežniku brez izpadov.

Kaj boste počistili

Kategorija Primeri Tipični prihranki
Neuporabljeni paketi in odvisnosti Osamljene knjižnice, zamenjani gonilniki 100 MB – 2 GB
Stara jedra Prejšnje različice jedra 200 MB na jedro
Predpomnilnik paketov Prenesene datoteke .deb / .rpm 500 MB – 5 GB
Dnevniški zapisi arhivi dnevnikov systemd 100 MB – 10 GB
Zamenjane dnevniške datoteke /var/log/*.gz, *.1 različno

Predpogoji

Preden začnete, se prepričajte, da so izpolnjeni naslednji pogoji:

  • Operacijski sistem: Ubuntu 24.04/26.04 LTS, Debian 13 ali AlmaLinux 10
  • Dostop: dostop sudo ali root do strežnika prek SSH
  • Potrebno znanje: samozavestna uporaba terminala Linux in osnovno upravljanje prek ukazne vrstice
  • Varnostna kopija: Pred množičnim odstranjevanjem paketov na produkcijskem strežniku vedno naredite posnetek ali varnostno kopijo. Na INTROSERV-u lahko naročite popolno varnostno kopijo neposredno iz uporabniškega območja.

Info

Ta vodnik za čiščenje sistema Linux zajema tako sisteme, ki temeljijo na APT (Ubuntu, Debian), kot tudi sisteme, ki temeljijo na DNF/YUM (AlmaLinux, RHEL). Ukazi, ki se med družinami razlikujejo, so prikazani ločeno. Ukazi, ki so na vseh sistemih enaki, so prikazani enkrat.

Ne nadaljujte, če velja katero koli od naslednjega:

  • Particija/ je zapolnjena več kot 95 % – vaš sistem morda že ne more več zapisovati. Najprej odpravite neposredni vzrok (ročno poiščite in izbrišite eno veliko datoteko).
  • Storitve so že izklopljene ali delujejo nepričakovano. Pred čiščenjem ugotovite glavni vzrok, da ne bi motili delovanja storitev, od katerih so Linux sistemi odvisni.
  • Nimate varnostne kopije ali posnetka stanja. Najprej jo naredite – na INTROSERV to traja manj kot 2 minuti iz uporabniškega območja.

Korak 1: Preverite porabo prostora na disku, preden začnete

Raven tveganja: NIZKA – Uporabljajo se le ukazi za branje. Nič se ne spreminja.

Nikoli ne čistite na slepo. Najprej ugotovite, kaj dejansko zaseda prostor.

1.1 Preverite skupno porabo prostora na disku

Za preverjanje porabe prostora na ravni datotečnega sistema zaženite ukaz df:

df -h

Pričakovani izpis:

Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 34G 3.8G 90% / tmpfs 1.0G 0 1.0G 0% /dev/shm

Particija / z več kot 80 % zasedenosti je opozorilni znak. Pri več kot 95 % bodo storitve začele odpovedovati.

1.2 Poiščite največje porabnike prostora

Uporabite ukaz `du`, da podrobno pregledate imenike. Začnite v korenskem imeniku in se pomikajte navzdol:

sudo du -h --max-depth=1 / 2>/dev/null | sort -rh | head -20

To prikaže 20 največjih map pod /. Pogosti krivci so /var/log, /var/cache, /usr in /home.

Omejite iskanje še bolj:

sudo du -h --max-depth=1 /var/log | sort -rh | head -10

1.3 Preverite porabo inodov

Prostor na disku ni edina omejitev. Inodi spremljajo število datotek. Particija lahko ima prost prostor, vendar zmanjka inodov, kar prav tako povzroči napake pri pisanju.

df -i

Pričakovani izpis:

Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vda1 2621440 210543 2410897 9% /

Če je vrednost IUse% višja od 80 %, verjetno imate imenik z deset tisoči majhnih datotek – pogosto gre za čakalno vrsto pošte, imenik sej ali predpomnilnik PHP. Uporabite ukaz du --inodes, da ga poiščete:

sudo du --inodes -h --max-depth=2 /var | sort -rh | head -10

Tip

Preden nadaljujete, morate preveriti porabo prostora na disku, ki jo prikazujejo sistemi Linux. Pri načrtih INTROSERV KVM VPS se kvote prostora na disku uveljavljajo tako na ravni blokov kot na ravni inodov. Če zmanjka enega ali drugega, bo to povzročilo enak simptom: zapisovanje tiho ne uspe ali storitve poročajo, da »na napravi ni več prostora«.

Korak 2: Odstranite neuporabljene pakete in odvisnosti

Stopnja tveganja: SREDNJA – Odstranitev paketov je mogoče povrniti prek zgodovine upravitelja paketov, vendar pred potrditvijo preglejte seznam.

Neuporabljeni paketi so najvarnejša stvar za čiščenje. Zasedajo prostor na disku, ne služijo nobenemu tekočemu procesu, v nekaterih primerih pa vsebujejo nepopravljene CVE-je.

2.1 Ubuntu / Debian – apt autoremove

apt autoremove odstrani pakete, ki so bili nameščeni kot odvisnosti, a jih nič več ne potrebuje:

sudo apt autoremove --purge -y

Z oznako --purge se odstranijo tudi preostale konfiguracijske datoteke. Brez nje se izvršilna datoteka paketa odstrani, konfiguracijske datoteke pa ostanejo na mestu.

Pričakovani izpis:

The following packages will be REMOVED: libfoo1 libbar2 old-driver-utils ... 0 upgraded, 0 newly installed, 8 to remove and 0 not upgraded.

Info

apt autoremove je najvarnejši način za odstranjevanje neuporabljanih paketov, za katere upravitelji odvisnosti v Linuxu vedo, da so osiroteli. Ne odstrani paketov, ki ste jih namestili ročno in jih ne uporabljate več. Te je treba ročno pregledati z ukazom apt list --installed.

2.2 AlmaLinux / RHEL – dnf autoremove

sudo dnf autoremove -y

Na starejših sistemih RHEL 7 / CentOS 7 uporabite yum autoremove:

sudo yum autoremove -y

Warning

Na sistemih družine RHEL sta ukaza ` dnf autoremove ` in `yum autoremove` bolj agresivna kot njuni ustrezniki v Debianu. Lahko predlagata odstranitev paketov, ki se v grafu odvisnosti zdijo neuporabljeni, vendar jih vaša aplikacija še vedno potrebuje. Pred potrditvijo skrbno preglejte seznam za odstranitev.

2.3 Očistite predpomnilnik paketov

Po posodobitvah in namestitvah upravitelji paketov lokalno shranijo prenesene arhivske datoteke. Po končani namestitvi jih lahko varno izbrišete.

Ubuntu / Debian:

sudo apt clean

S tem se odstranijo vse datoteke .deb iz predpomnilnika v mapi /var/cache/apt/archives/. Če želite odstraniti le pakete, ki niso več na voljo v skladišču (zamenjane različice):

sudo apt autoclean

AlmaLinux / RHEL:

sudo dnf clean all

Pričakovani izpis:

16 files removed

Tip

apt clean je vedno varen. Odstrani le predpomnilnik prenosov. Če boste kasneje morali ponovno namestiti paket, se bo ta ponovno prenesel iz repozitorija.

Korak 3: Izbrišite stare jedra

Stopnja tveganja: VISOKA – Če odstranite napačno jedro, se strežnik po naslednjem ponovnem zagonu ne bo mogel zagnati. Vedno preverite uname -r, preden nadaljujete.

Vsaka posodobitev jedra pusti prejšnjo različico na mestu kot varnostno mrežo. Ko se prepričate, da strežnik stabilno deluje z novim jedrom, lahko stare jedre varno odstranite – vsako običajno sprosti 200–400 MB prostora.

3.1 Preverite, katero jedro teče

Nikoli ne odstranjujte jedra, v katerem ste trenutno zagnani:

uname -r

Pričakovani izpis:

5.15.0-105-generic

3.2 Prikaži seznam vseh nameščenih jedr

Ubuntu / Debian:

dpkg -l | grep linux-image | awk '{print $2}'

Pričakovani izpis:

linux-image-5.15.0-100-generic linux-image-5.15.0-105-generic linux-image-generic

Meta-paketa ne smete odstraniti – ta namreč spremlja trenutno priporočeno jedro:

  • Ubuntu: linux-image-generic
  • Debian: linux-image-amd64
  • AlmaLinux: Metapaket se ne uporablja, saj se zanaša na installonly_limit v dnf.

Odstranite le določene pakete z določeno različico, ki niso vaš trenutni jedro.

AlmaLinux / RHEL:

rpm -q kernel

Pričakovani izpis:

kernel-5.14.0-284.11.1.el9_2.x86_64 kernel-5.14.0-362.8.1.el9_3.x86_64

3.3 Odstranite stare jedra

Ubuntu / Debian – avtomatska metoda:

apt autoremove iz 2. koraka že poskrbi za stara jedra v Ubuntu, če je nameščen linux-image-generic. Lahko jih tudi izrecno izberete. Zamenjajte različico s tisto, ki jo želite odstraniti (ne s tisto, ki trenutno teče):

sudo apt remove --purge linux-image-5.15.0-100-generic -y

AlmaLinux / RHEL:

Upravitelj paketov dnf hrani nastavljivo število starih jedr. Omejitev nastavite v datoteki /etc/dnf/dnf.conf:

sudo nano /etc/dnf/dnf.conf

Dodajte ali posodobite vrstico:

installonly_limit=2

Nato zaženite:

sudo dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q)

S tem odstranite vse jedra razen dveh najnovejših.

Warning

Preden izbrišete stare jedra, ki jih linux strežniki še vedno potrebujejo, preverite, ali se izpis ukaza uname -r ujema z enim od jedra, ki jih želite obdržati. Odstranitev aktivnega jedra ne bo povzročila okvare delujočega sistema, vendar po naslednjem ponovnem zagonu ne boste imeli ničesar, s čimer bi lahko zagnali sistem.

Korak 4: Počistite dnevnike

Stopnja tveganja: NIZKA – odstrani se le arhivirani vnosi dnevnika. To ne vpliva na tekoče storitve.

systemd-journald zbira dnevnike iz vseh storitev v sistemu. Privzeto se lahko neomejeno povečuje, dokler ne doseže omejitve prostora na disku – ali dokler se vaš prostor na disku ne izčrpa.

4.1 Preverite trenutno velikost dnevnika

journalctl --disk-usage

Pričakovani izpis:

Archived and active journals take up 2.3G in the filesystem.

4.2 Zmanjšajte dnevnik

Če želite obdržati le dnevnike zadnjih 7 dni:

sudo journalctl --vacuum-time=7d

Če želite obdržati le zadnjih 500 MB:

sudo journalctl --vacuum-size=500M

Pričakovani izpis:

Deleted archived journal /var/log/journal/.../[email protected] (64.0M). Vacuuming done, freed 1.8G of archived journals from /var/log/journal/.

4.3 Preprečite nadaljnje povečevanje dnevnika

Ustvarite konfiguracijsko datoteko, ki bo trajno omejila dnevnik (v AlmaLinux 10 glavna konfiguracijska datoteka privzeto ni prisotna v mapi /etc/, zato je to standardni pristop):

sudo mkdir -p /etc/systemd/journald.conf.d sudo tee /etc/systemd/journald.conf.d/99-size.conf <<EOF [Journal] SystemMaxUse=500M MaxRetentionSec=30day EOF

Uporabite spremembo:

sudo systemctl restart systemd-journald

Info

Med čiščenjem dnevniških datotek v sistemih Linux to ne vpliva na dnevniške datoteke aplikacij v mapi /var/log/ – te upravlja logrotate. Dnevnik zajema le storitve, ki so del sistema systemd in pišejo neposredno v dnevnik (kot so sshd, nginx ob uporabi enote systemd, cron itd.).

Korak 5: Počistite rotirane in stare dnevniške datoteke

Stopnja tveganja: SREDNJA – Izbrišejo se le stisnjene datoteke. Ne dotikajte se datotek brez končnice .gz ali številčnega pripona.

Dnevniki aplikacij v mapi /var/log/ jih upravlja logrotate. Običajno logrotate hrani določeno število rotiranih kopij in jih samodejno stiska. Če je bil logrotate napačno nastavljen ali ni deloval, lahko najdete velike količine datotek .gz, .1, .2.

5.1 Poiščite velike dnevniške datoteke

find /var/log -type f -name "*.gz" -o -name "*.log" | xargs du -sh 2>/dev/null | sort -rh | head -20

Ali preprosteje:

sudo du -h /var/log | sort -rh | head -20

5.2 Izbrišite stare stisnjene arhive dnevnikov

Stisnjene rotirane dnevnike (.gz) lahko brez skrbi izbrišete. To so arhivi že zaprtih dnevniških datotek.

Najprej si oglejte, kaj bo odstranjeno – za prikaz seznama zaženite program brez parametra -delete:

sudo find /var/log -name "*.gz" -mtime +30

Če je izpis pravilen, izvedite dejansko brisanje:

sudo find /var/log -name "*.gz" -mtime +30 -delete

S tem se izbrišejo arhivi dnevnikov .gz, starejši od 30 dni.

Warning

Ne izbrišite dnevniških datotek, v katere se trenutno zapisuje – tistih brez končnice za rotacijo ali končnice .gz. Izbris datoteke /var/log/nginx/access.log med delovanjem nginx ne prepreči, da bi nginx še naprej zapisoval v zdaj izbrisani inode. Prostor se ne sprosti, dokler se nginx ne ponovno zažene. Namesto tega jo varno skrajšajte: sudo truncate -s 0 /var/log/nginx/access.log.

5.3 Preverite, ali je logrotate pravilno nastavljen

Preverite, katere storitve imajo konfiguracije logrotate:

ls /etc/logrotate.d/

Ročno zaženite logrotate v načinu odpravljanja napak, da se prepričate, da deluje brez napak:

sudo logrotate -d /etc/logrotate.conf

Zastavica -d pomeni simulacijo – nič se ne spremeni, vendar boste natančno videli, kaj bi se zgodilo. Če v mapi /etc/logrotate.d/ manjka katera od storitev, ustvarite konfiguracijo zanjo. Za celotna navodila za konfiguracijo programa logrotate glejte vodnik za rotacijo dnevnikov.

Korak 6: Izbrišite začasne datoteke

Raven tveganja: SREDNJA – PHP-seje in predpomnilniki aplikacij vplivajo na dejanske uporabnike. Pred brisanjem si oglejte predogled.

6.1 Očistite mapo /tmp

Večina distribucij ob ponovnem zagonu počisti mapo /tmp. Če vaš strežnik deluje že več mesecev, so se v njej morda nabrale velike začasne datoteke:

du -sh /tmp

Če želite odstraniti datoteke, starejše od 7 dni, si jih najprej oglejte:

sudo find /tmp -type f -mtime +7

Če se seznam zdi varen, izvedite brisanje:

sudo find /tmp -type f -mtime +7 -delete

6.2 Očistite predpomnilnike aplikacij

Mnoge aplikacije pišejo svoje lastne predpomnilnike. Preverite te pogoste lokacije (opomba: preverite, ali ti imeniki obstajajo v vašem sistemu; v čistem sistemu jih morda ni in boste videli napako »Takšne datoteke ali imenika ni«):

# PHP session files (often forgotten, if installed) sudo du -sh /var/lib/php/sessions/ # Pip / Python package caches (if running as root and installed) sudo du -sh /root/.cache/pip/ # npm cache (if node is installed system-wide) sudo du -sh /root/.npm/

Te mape je varno izbrisati, če jih aplikacija trenutno ne uporablja.

Tip

Preden počistite predpomnilnik aplikacije, se prepričajte, da storitev ni sredi transakcije. Če počistite imenik sej PHP, medtem ko so uporabniki prijavljeni, se bodo vsi odjavili.

Korak 7: Preverite, ali storitve še vedno delujejo

Stopnja tveganja: NIZKA – Preverjanje samo za branje. To izvedite po vsakem koraku, ne le na koncu.

Po vsakem ciklu čiščenja preverite, ali vaše storitve še delujejo. To storite pred zaprtjem seje SSH.

7.1 Preverite stanje kritičnih storitev

Preverite le storitve, ki so dejansko nameščene na vašem strežniku (na čistem sistemu bo preverjanje nginx ali mysql vrnilo sporočilo »Enota ni najdena«).

Ubuntu / Debian:

systemctl status nginx systemctl status mysql systemctl status ssh

AlmaLinux / RHEL:

systemctl status nginx systemctl status mysqld systemctl status sshd

Vsaka storitev mora prikazovati »Active: active (running)«. Če katera koli storitev prikazuje »failed« ali »inactive«, preverite njene dnevnike:

journalctl -u nginx --since "10 minutes ago"

7.2 Preverite, ali se je poraba prostora na disku izboljšala

df -h

Primerjajte stolpec »Use%« s tistim, kar ste videli v koraku 1. Sprememba naj bi odražala prostor, ki ste ga sprostili.

7.3 Preizkusite svojo aplikacijo

Če uporabljate spletni strežnik, pošljite testno zahtevo:

curl -I http://localhost

Pričakovani izpis:

HTTP/1.1 200 OK Server: nginx/1.24.0

Odgovor 200 OK potrjuje, da nginx normalno obdeluje promet.

Odpravljanje težav

`df` ne kaže izboljšanja po odstranitvi paketov

Odstranitev paketov takoj sprosti prostor. Če se izpis uk aza `df` ne spremeni, so datoteke še vedno odprte. Poiščite odprte, a izbrisane datoteke:

sudo lsof | grep deleted

Ponovno zaženite storitev, ki drži datoteko odprto, in prostor bo spet na voljo.

`apt autoremove` želi odstraniti nekaj, kar izgleda pomembno

Seznam natančno preberite. Če opazite ime paketa, ki ga prepoznate kot odvisnost od zagnane storitve, pritisnite N in preverite. Izvedite ukaz `apt-cache rdepends <paket> `, da vidite, kaj je od njega odvisno.

`journalctl --vacuum-time` ne prinese nobene spremembe

Dnevnik je morda že manjši od ciljne vrednosti. Preverite z ukazom `journalctl --disk-usage`. Preverite tudi, ali je dnevnik trajen: preverite, ali obstaja mapa `/var/log/journal/`. Če obstaja le mapa `/run/log/journal/`, je dnevnik shranjen v pomnilniku RAM in se ob ponovnem zagonu samodejno izbriše.

Storitev ne deluje po `apt autoremove`

Zaženite `systemctl status <storitev> ` in preverite napako. Če je bila odstranjena skupna knjižnica, ponovno namestite paket, ki jo zagotavlja:

sudo apt install --fix-broken

Zmanjkuje inodov kljub prostemu prostoru na disku

Poiščite imenik z največ datotekami:

find / -xdev -printf '%h\n' 2>/dev/null | sort | uniq -c | sort -rn | head -10

Pogosti krivci: poštne čakalne vrste v /var/spool/mail, PHP-seje v /var/lib/php/sessions ali nebrzdano delo cron, ki ustvarja začasne datoteke.

Povrnitev

Večina postopkov čiščenja ni reverzibilna – izbrisane datoteke so za vedno izgubljene. Zaradi tega je korak varnostnega kopiranja v poglavju »Predpogoji« obvezen.

Kar zadeva odstranjevanje paketov, lahko ponovno namestite tisto, kar je bilo odstranjeno:

Ubuntu / Debian:

sudo apt install <package-name>

AlmaLinux / RHEL:

sudo dnf install <package-name>

Če želite videti zgodovino tega, kar je bilo odstranjeno v trenutni seji:

Ubuntu / Debian:

cat /var/log/dpkg.log | grep "^$(date +%Y-%m-%d)" | grep " remove "

AlmaLinux / RHEL:

sudo dnf history list sudo dnf history undo last

dnf history undo last ponovno namesti pakete, odstranjene v zadnji transakciji – uporabno orodje za obnovo, če je avtomatska odstranitev šla dlje, kot je bilo nameravano.

Zaključek

Čiščenje strežnika Linux brez izpadov se zreducira na tri stvari: najprej izmerite, odstranite le tisto, kar sistem potrdi kot neuporabljeno, in po vsakem koraku preverite storitve. Preden se česarkoli dotaknete, zaženite ukaza df -h in du. Za neuporabljene pakete uporabite apt autoremove / yum autoremove, za čiščenje dnevniških zapisov journalctl --vacuum-time, za stare rotirane arhive pa find /var/log -name "*.gz". Stara jedra odstranite šele potem, ko se prepričate, da se izpis ukaza ` uname -r ` ujema s tistim, kar želite obdržati. In vedno preverite `systemctl status`, preden zaprete terminal.

Za VPS INTROSERV je praktični cilj ohranjanje izkoriščenosti prostora / pod 80 % – to pušča prostor za nenadne povečanje dnevniških datotek in posodobitve paketov brez nujnega posredovanja. Če je prostor na disku ponavljajoč se problem, razmislite o spremembi velikosti prostora za shranjevanje na vašem VPS neposredno iz stranke INTROSERV.

Različica dokumenta: 1.0
Zadnja posodobitev: maj 2026
Lastnik: Ekipa za tehnično dokumentacijo

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA