Moin Moin!
Ich habe hier ein Skript, dass in Ubuntu 22.4 PLUS alle zwei Tage und immer 15 Minuten nach dem Systemstart ausgeführt werden soll. Es hat die Aufgabe, Runtimes und Flatpaks zu aktualisieren sowie zu überprüft, ob veraltete oder kaputte Runtimes vorhanden sind. Ist dies der Fall, wird eine Reparatur eingeleitet und/ oder gelöscht. Das Ganze wird mit maximal 5 Prozent CPU Leistung und ohne Fragen bzw. Meldungen durchgeführt.
Könnte mir jemand Feedback zu dem Skript geben, ob das so richtig ist und so auch lauffähig wäre, danke.
MFG: Evilware666
#!/bin/bash
# Pfad zum Skript
SKRIPT_PFAD="/bin/update_script.sh"
LOG_PFAD="/var/log/update_script.log" # Pfad für ein Logfile
# Überprüfen, ob cpulimit installiert ist und es ggf. installieren
if ! command -v cpulimit &> /dev/null; then
sudo apt-get update
sudo apt-get install -y cpulimit
fi
# Setzen Sie die gewünschte CPU-Limitierung, hier 5 Prozent (5000 Millisekunden)
CPU_LIMIT=5000
# Überprüfen, ob das Skript in den letzten zwei Tagen gestartet wurde
letzt_start=$(stat -c %Y "$LOG_PFAD")
jetzt=$(date +%s)
vergangene_zeit=$((jetzt - letzt_start))
zwei_tage=$((2 * 24 * 60 * 60)) # 2 Tage in Sekunden
if [ "$vergangene_zeit" -ge "$zwei_tage" ]; then
# Aktualisiere das letzte Startdatum
touch "$LOG_PFAD"
# Führe das Skript mit CPU-Limitierung aus
nice -n 10 cpulimit -l $CPU_LIMIT $SKRIPT_PFAD > "$LOG_PFAD" 2>&1 &
fi
# Update Flatpak mit CPU-Limitierung
nice -n 10 cpulimit -l $CPU_LIMIT flatpak update -y > /dev/null 2>&1 &
# Update Runtimes mit CPU-Limitierung
nice -n 10 cpulimit -l $CPU_LIMIT flatpak update --appstream -y > /dev/null 2>&1 &
nice -n 10 cpulimit -l $CPU_LIMIT flatpak update --runtime -y > /dev/null 2>&1 &
# Deinstalliere unbenutzte Runtimes mit CPU-Limitierung
nice -n 10 cpulimit -l $CPU_LIMIT flatpak list --columns=application | cut -d '/' -f 1 | sort -u > installed_runtimes.txt &
nice -n 10 cpulimit -l $CPU_LIMIT flatpak list --columns=runtime | cut -d '/' -f 1 | sort -u > used_runtimes.txt &
# Suche nach unbenutzten Runtimes
unused_runtimes=$(comm -23 installed_runtimes.txt used_runtimes.txt)
# Deinstalliere unbenutzte Runtimes mit CPU-Limitierung
if [ -n "$unused_runtimes" ]; then
echo "Deinstalliere unbenutzte Runtimes: $unused_runtimes"
for runtime in $unused_runtimes; do
nice -n 10 cpulimit -l $CPU_LIMIT flatpak uninstall -y $runtime > /dev/null 2>&1 &
done
fi
# Repariere defekte Runtimes mit CPU-Limitierung
defective_runtimes=$(flatpak list --columns=application,reason | grep -i "Broken runtime" | cut -d ' ' -f 1)
if [ -n "$defective_runtimes" ]; then
echo "Repariere defekte Runtimes: $defective_runtimes"
for runtime in $defective_runtimes; do
nice -n 10 cpulimit -l $CPU_LIMIT flatpak repair $runtime > /dev/null 2>&1 &
done
fi
# Aufräumen
rm installed_runtimes.txt used_runtimes.txt
Display More