Skrypt w bashu do monitorowania rozmiaru wybranych katalogów

Skrypt w bashu do monitorowania rozmiaru wybranych katalogów

Oto prosty skrypt w Bashu, który monitoruje rozmiar wskazanych katalogów i wysyła e-mail, jeśli zostanie przekroczony określony limit. Załóżmy, że masz plik tekstowy monitorowane_katalogi.txt, który zawiera ścieżki do katalogów do monitorowania, oraz ustalony limit rozmiaru.

Skrypt (monitoruj_rozmiar.sh):

#!/bin/bash

# Ścieżka do pliku z listą monitorowanych katalogów
LISTA_KATALOGOW="sciezka/do/monitorowane_katalogi.txt"

# Adres e-mail, na który zostanie wysłane powiadomienie
ADRES_EMAIL="twoj@email.com"

# Limit rozmiaru w megabajtach
LIMIT_ROZMIARU=100

# Pobieranie listy katalogów do monitorowania
KATALOGI=$(cat "$LISTA_KATALOGOW")

# Iteracja przez każdy katalog
for KATALOG in $KATALOGI; do
  # Pobieranie bieżącego rozmiaru katalogu w megabajtach
  ROZMIAR_KATALOGU=$(du -m "$KATALOG" | cut -f1)

  # Sprawdzanie, czy rozmiar przekroczył limit
  if [ "$ROZMIAR_KATALOGU" -gt "$LIMIT_ROZMIARU" ]; then
    # Wysyłanie powiadomienia e-mailem
    TEMAT="Powiadomienie o przekroczeniu limitu rozmiaru"
    TRESC="Katalog $KATALOG przekroczył limit rozmiaru. Obecny rozmiar: $ROZMIAR_KATALOGU MB."
    echo "$TRESC" | mail -s "$TEMAT" "$ADRES_EMAIL"
  fi
done

Przykład pliku z katalogami do monitorowania monitorowane_katalogi.txt:

/home/uzytkownik/katalog1
/var/log
/tmp

Po utworzeniu skryptu, nadaj mu prawa do wykonania:

chmod +x monitoruj_rozmiar.sh

Następnie dodaj zadanie do crontab w celu uruchamiania skryptu co 5 minut:

crontab -e

Dodaj poniższą linię na końcu pliku crontab:

<code>*/5 * * * * /sciezka/do/monitoruj_rozmiar.sh</code>

Zapisz plik crontab i zakończ edycję. Teraz skrypt będzie uruchamiany co 5 minut, sprawdzając rozmiar wskazanych katalogów i wysyłając e-mail, jeśli zostanie przekroczony limit.