Hilf beim Skript

  • 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

  • Dein Skript sieht im Großen und Ganzen gut aus, aber ich habe ein paar Anmerkungen und Verbesserungsvorschläge:

    Log-Datei: Du benutzt die Log-Datei nur für die Überprüfung, wann das Skript das letzte Mal gestartet wurde. Du könntest es jedoch auch für die Ausgabe von Nachrichten und Fehlern verwenden. Zum Beispiel könntest du den Output von flatpak update oder flatpak repair ins Log schreiben, um es später einfacher nachvollziehen zu können.

    Code
    # Führe das Skript mit CPU-Limitierung aus und schreibe den Output ins Log
    nice -n 10 cpulimit -l $CPU_LIMIT $SKRIPT_PFAD >> "$LOG_PFAD" 2>&1 &

    Abhängigkeiten installieren: Du könntest sicherstellen, dass alle benötigten Abhängigkeiten vorhanden sind, indem du sie zu Beginn des Skripts installierst.

    Code
    # Abhängigkeiten installieren
    sudo apt-get update
    sudo apt-get install -y cpulimit flatpak

    Überprüfung auf defekte Runtimes: Die Überprüfung auf defekte Runtimes könnte in den Bereich verschoben werden, wo du auch nach unbenutzten Runtimes suchst. Das macht den Code kohärenter.

    Aufräumen: Du kannst den Logfile-Pfad und den Skript-Pfad am Anfang des Skripts als Konstanten definieren, um die Wartbarkeit zu verbessern.

    Hier ist eine überarbeitete Version mit den genannten Änderungen:

    Diese Änderungen sollen die Lesbarkeit und Wartbarkeit des Skripts verbessern. Beachte, dass einige Anpassungen möglicherweise erforderlich sind, abhängig von den genauen Anforderungen und der Systemkonfiguration.

    Wenn du es komplett automatisieren willst kannst du ggf. bei sudo das Passwort vorgeben

    Code
    read -p "Bitte geben Sie ihr Passwort ein: " passwort
    echo "$passwort" | sudo -kS apt install -y $programm 
    # -S, --stdin, The -S flag makes sudo read the password from the standard input. 
    # Note that this will produce an error if your sudo access token is active, 
    # if you don't need to enter your password because you've already done so recently. 
    # To get around that, you could use -k to reset the access token:   example:   echo 'password' | sudo -kS ls
  • Hallo, so richtige Fehler kann ich Persönlich jetzt nicht entdecken und Du hast es ja auch sehr gut Kommentiert :)
    Wie man so etwas gestaltet, ist ja auch immer ein wenig der eigene Geschmack, weil viele Wege führen nach Rom...
    Gibt also, für einen Zweck immer mehr Wege, das dann umzusetzen.
    Hier vielleicht ein paar kleine Anregungen oder meine Gedanken dazu:

    Eine Abfrage wie diese:

    Code
    if [ "$vergangene_zeit" -ge "$zwei_tage" ]; then
      # Aktualisiere das letzte Startdatum
      touch "$LOG_PFAD"

    Könntest Du ändern in:

    Code
    [ "$vergangene_zeit" -ge "$zwei_tage" ]&&touch "$LOG_PFAD" # Aktualisiere das letzte Startdatum

    Es ist nicht gerade übersichtlicher, erfüllt aber den gleichen Zweck und entschlackt etwas den Code.

    Hier lässt Du die Ergebnisse in eine Textdatei schreiben:

    Code
    # 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 &

    Das ist Gut, wenn man die Ergebnisse auch später noch braucht. Wenn man die aber nur kurz zur Überprüfung innerhalb des Skriptes
    für eine weiteres Kommando benötigt, muss man diese nicht unbedingt in eine Datei auf das Laufwerk schreiben lassen.
    Du könntest auch in eine temporäre Variable schreiben und diese dann mit unset wieder löschen.

    Code
    temp_var_application="$(nice -n 10 cpulimit -l $CPU_LIMIT flatpak list --columns=application | cut -d '/' -f 1 | sort -u) &

    und am ende des Skriptes unset temp_var_application

    Wie gesagt, das sind nur Beispiele und Anregungen aus meinen Gedanken zu Deinem Skript, aber so ein Austausch hilft ja Jedem hier und
    ich mag halt Bash :D

    Spoiler anzeigen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!