Automatizarea curățeniei în sistem: construiți un script Bash de mentenanță periodică
Un sistem Linux bine configurat este recunoscut pentru stabilitatea sa pe termen lung. Cu toate acestea, ideea că un sistem de operare bazat pe kernelul Linux nu acumulează "reziduuri" este un mit des întâlnit. Fie că vorbim despre fișiere temporare rămase în directorul /tmp, arhive de pachete vechi stocate de managerul de pachete (apt, pacman sau dnf), fie de fișiere log de dimensiuni gigantice adunate în /var/log, spațiul pe disc se poate epuiza mai repede decât am crede.
Curățarea manuală a acestor fișiere poate deveni o sarcină repetitiva și plictisitoare. Din fericire, Linux excelează la un capitol esențial: automatizarea. Prin combinarea unui script Bash bine structurat cu un utilitar de planificare precum cron, orice utilizator își poate transforma sistemul într-un mediu complet auto-sustenabil.
De ce este necesară mentenanța periodică în Linux?
Spre deosebire de alte sisteme de operare care rulează unelte opace de defragmentare și curățenie în fundal, Linux oferă control total utilizatorului. Totuși, libertatea vine la pachet cu responsabilitatea gestionării resurselor.
Există câteva zone critice unde fișierele inutile tind să se acumuleze:
***cache-ul managerului de pachete: de fiecare dată când instalați sau actualizați o aplicație, fișierele descărcate rămân stocate local. Dacă nu sunt șterse periodic, pot ocupa rapid zeci de gigaocteti.
***directorul /tmp și cache-ul utilizatorului (~/.cache): Deși /tmp este adesea curățat la repornire, fișierele din ~/.cache cresc nelimitat, păstrând date temporare de la navigatoare web, editoare sau medii de dezvoltare.
***jurnalele de sistem: serviciul systemd-jounald înregistrează fiecare eveniment din sistem. Fără o limită clară stabilită, jurnalele pot ajunge să ocupe un spațiu considerabil pe disc.
***pachetele orfane și dependențele neutilizate: în urma dezinstalării unor programe, dependențele instalate automat rămân adesea prezente pe disc fără vreun rol activ.
Structura unui script Bash de mentenanță eficient
Un script de mentenanță robust trebuie să îndeplinească câteva condiții fundamentale. Nu este suficient doar să execute comenzi de ștergere, el trebuie să verifice permisiunile de executare, să calculeze spațiul eliberat și să ofere un răspuns clar prin alerte în terminal.
Mai jos codul sursă al scriptului de mentenanță: cleaner.sh.
cleaner.sh — Terminal
root@linux:~#
cat cleaner.sh
#!/usr/bin/env bash
# ==============================================================================
# Script: cleaner.sh
# Descriere: Script de mentenanță și curățare automată pentru sisteme Linux
# Autor: Bugulet Ciprian-Dumitru
# WWW: https://ciprianbugulet.blogspot.com
# ==============================================================================
# Culori pentru alerte în terminal
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Verificarea permisiunilor de root
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}[EROARE] Acest script trebuie rulat cu drepturi de root (sudo).${NC}"
exit 1
fi
echo -e "${BLUE}====================================================${NC}"
echo -e "${BLUE} Pornire proces de mentenanță sistem Linux ${NC}"
echo -e "${BLUE}====================================================${NC}\n"
# 1. Calcularea spațiului liber înainte de curățare
INITIAL_SPACE=$(df / --output=avail | tail -n 1)
# 2. Curățarea cache-ului managerului de pachete
echo -e "${YELLOW}[1/4] Curățare cache pachete și dependențe orfane...${NC}"
if command -v apt &> /dev/null; then
apt autoremove -y &> /dev/null
apt autoclean -y &> /dev/null
echo -e "${GREEN} -> Cache APT curățat cu succes.${NC}"
elif command -v pacman &> /dev/null; then
pacman -Sc --noconfirm &> /dev/null
# Ștergere pachete orfane dacă există
if pacman -Qtdq &> /dev/null; then
pacman -Rns $(pacman -Qtdq) --noconfirm &> /dev/null
fi
echo -e "${GREEN} -> Cache Pacman și pachete orfane curățate.${NC}"
elif command -v dnf &> /dev/null; then
dnf autoremove -y &> /dev/null
dnf clean all &> /dev/null
echo -e "${GREEN} -> Cache DNF curățat cu succes.${NC}"
fi
# 3. Limitarea dimensiunii jurnalelor systemd
echo -e "\n${YELLOW}[2/4] Limitare dimensiune jurnale de sistem (Journald)...${NC}"
if command -v journalctl &> /dev/null; then
journalctl --vacuum-size=100M &> /dev/null
echo -e "${GREEN} -> Jurnalele au fost reduse la maxim 100MB.${NC}"
fi
# 4. Ștergerea fișierelor din Trash
echo -e "\n${YELLOW}[3/4] Golire coș de gunoi pentru utilizatori...${NC}"
for user_home in /home/*; do
if [ -d "$user_home/.local/share/Trash" ]; then
rm -rf "$user_home/.local/share/Trash/files/"*
rm -rf "$user_home/.local/share/Trash/info/"*
fi
done
echo -e "${GREEN} -> Coșurile de gunoi au fost golite.${NC}"
# 5. Curățarea fișierelor din /tmp
echo -e "\n${YELLOW}[4/4] Curățare fișiere temporare vechi din /tmp...${NC}"
find /tmp -type f -atime +7 -delete &> /dev/null
echo -e "${GREEN} -> Fișierele temporare neaccesate de 7 zile au fost șterse.${NC}"
# 6. Calcularea spațiului liber final
FINAL_SPACE=$(df / --output=avail | tail -n 1)
FREED_SPACE=$((FINAL_SPACE - INITIAL_SPACE))
FREED_MB=$((FREED_SPACE / 1024))
echo -e "\n${BLUE}====================================================${NC}"
echo -e "${GREEN}[SUCCES] Mentenanța a fost finalizată cu succes!${NC}"
if [ $FREED_MB -gt 0 ]; then
echo -e "${YELLOW}Spațiu eliberat pe disc: ~${FREED_MB} MB${NC}"
else
echo -e "${YELLOW}Sistemul era deja curat. Nu s-a eliberat spațiu semnificativ.${NC}"
fi
echo -e "${BLUE}====================================================${NC}"
Analiza și funcționalitatea scriptului
Pentru a putea înțelege mai bine mecanismul din spatele scriptului, este utilă o scurtă analiză a elementelor cheie:
1. Codurile de culoare ANSI pentru alerte
Sintaxe precum RED='\033[0;31m' reprezintă secvențe de evacuare ANSI. Ele modifică culoarea textului afișat în terminal. Această abordare permite identificarea vizuală rapidă a stadiului în care se află procesul: galben pentru acțiuni în desfășurare, verde pentru confirmări și roșu pentru erori critice.
Pentru a putea înțelege mai bine mecanismul din spatele scriptului, este utilă o scurtă analiză a elementelor cheie:
1. Codurile de culoare ANSI pentru alerte
Sintaxe precum RED='\033[0;31m' reprezintă secvențe de evacuare ANSI. Ele modifică culoarea textului afișat în terminal. Această abordare permite identificarea vizuală rapidă a stadiului în care se află procesul: galben pentru acțiuni în desfășurare, verde pentru confirmări și roșu pentru erori critice.
2. Detectarea automată a distribuției
Aplicațiile diferă în funcție de familia din care face parte distribuția Linux utilizată. Scriptul folosește comanda command -v pentru a verifica prezența managerului de pachete specific sistemului:
***apt - Ubuntu/Debian/Pop!_OS/Linux Mint
***pacman - Arch Linux/Manjaro/EndeavourOS
***dnf - Fedora/Red Hat/AlmaLinux
Această abordare face ca scriptul să fie portabil și să poată fi rulat pe distribuții multiple fără modificări ale codului.
3. Gestionarea spațiului și a fișierelor temporare
Prin comanda df / --output=avail, scriptul citește spațiul disponibil pe partiția rădăcină (/) înainte și după execuție. Diferența este calculată direct în variabile Bash și convertită din kiloocteți în megaocteti pentru a oferi un raport clar la final.
De asemenea, comanda find /tmp -type f -atime +7 -delete caută fișiere în directorul /tmp care nu au fost accesate în ultimele 7 zile și le elimină automat.
Configurarea și executarea scriptului
Pentru că scriptul să poată fi utilizat, trebuie parcurși câțiva pași simpli direct în terminal:
1. salvarea fișierului
Fișierul se poate crea folosind orice editor de text din terminal, cum ar fi nano:
$ sudo nano /usr/local/bin/cleaner.sh
Introduceți scriptul de mai sus, apoi salvați fișierul utilizând combinația de taste Ctrl+O, urmată de Enter și Ctrl+X,
2. acordarea drepturilor de execuție
Fișierele text proaspăt create nu au permisiuni de execuție. Acestea se adaugă cu ajutorul comenzii chmod:
$ sudo chmod +x /usr/local/bin/cleaner.sh
3. testarea manuală
Scriptul poate fi testat direct prin rularea comenzii:
$ sudo cleaner.sh
Automatizarea mentenanței prin Cron Jobs
Procesul devine cu adevărat eficient în momentul în care rularea manuală este eliminată complet. Utilitarul cron permite planificarea execuției la intervale rgulate (zilnic, săptămânal sau lunar). Pentru a putea să adaugați o sarcină automată în crontab-ul utilizatorului root, executați comanda:
$ sudo crontab -e
Procesul devine cu adevărat eficient în momentul în care rularea manuală este eliminată complet. Utilitarul cron permite planificarea execuției la intervale rgulate (zilnic, săptămânal sau lunar). Pentru a putea să adaugați o sarcină automată în crontab-ul utilizatorului root, executați comanda:
$ sudo crontab -e
Vom face ca scriptul să ruleze în fiecare zi de Luni, la ora 10 dimineața, puteți adăuga următoarea linie:
0 10 * * 1 /usr/local/bin/cleaner.sh > /var/log/cleaner.log 2>&1
Explicarea liniei:
***0 10 * * 1 - reprezintă sintaxa cron pentru rularea scriptului în fiecare Luni la ora 10
***/usr/local/bin/cleaner.sh - calea absoluta către scriptul creat
***> /var/log/cleaner.log 2>&1 - redictioneaza atât ieșirea standard, cât și erorile către un fișier log dedicat. Astfel, istoricul curățării poate fi consultat ulterior prin comanda cat /var/log/cleaner.log.
Automatizarea proceselor de rutină reprezintă unul dintre cele mai mari avantaje ale utilizării unui sistem de operare Linux. Un script de mentenanță simplu, configurat o singură dată, economisește timp, menține sistemul rapid și previne problemele legate de lipsa spațiului pe disc.
Așadar dacă v-a plăcut articolul informativ "Automatizarea curățeniei în sistem: construiți un script Bash de mentenanță periodică" distribuiți-l pe rețelele sociale sau scrieți în caseta de comentarii întrebările și sugestiile dumneavoastră, deoarece mă ajută să îmbunătățesc sau să corectez conținutul.


Comments