Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Gentoo Update Skript
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2638
Location: Heidelberg - Germany

PostPosted: Sun Oct 20, 2024 10:07 am    Post subject: Gentoo Update Skript Reply with quote

Moin moin,

ich habe mir eine Update Skript für die routinemäßigen Updates gebastelt. Das möchte ich hier mal vorstellen. Vielleicht findet der eine oder andere das ja gut und möchte es haben. In meinem Fall heißt es "worldupdate":

Code:

#!/bin/bash

# Fehlerfunktion für einheitliche Fehlerbehandlung
error_exit() {
    local message="$1"
    telegram "Beim Worldupdate auf Kellerkind ist ein Fehler aufgetreten: $message"
    exit 1
}

# Funktion für das World-Update
do_world_update() {
    if [[ $1 != "nosync" ]]; then
        emaint sync -a || error_exit "emaint sync fehlgeschlagen"
    fi
   
    emerge -avuDN --with-bdeps=y @world && \
    emerge @preserved-rebuild && \
    emerge -a --depclean && \
    revdep-rebuild -p && \
    eix-update || error_exit "Ein Schritt des World-Updates ist fehlgeschlagen"
}

# Funktion für fstrim
do_fstrim() {
    if fstrimcount; then
        echo "fstrimcount erreicht, führe fstrim aus..."
        fstrim -v /tmp && fstrim -v /var/tmp || error_exit "fstrim ist fehlgeschlagen"
    else
        echo "fstrimcount nicht erreicht, überspringe fstrim"
    fi
}

# Hauptfunktion
main() {
    do_world_update "$1" && \
    do_fstrim && \
    (
        echo "eclean distfiles in 5s. Ctrl-c to interrupt .."
        sleep 5
        eclean distfiles
    ) || error_exit "Ein Schritt des Hauptprozesses ist fehlgeschlagen"
}

# Skript ausführen
main "$1"


Die Kommentare sind jetzt in deutsch, darüber kann man streiten und/oder es ändern. Das Kommando "telegram" sendet eine Nachricht auf meinen Telegram Bot, falls was schief gelaufen ist.


Das verwendete Skrip "fstrimdount", welches hier aufgerufen wird, sorgt dafür, dass fstrim nur bei jedem 20zigsten Update auf die SSDs, die unter /tmp und /var/tmp liegen ausgeführt wird. Für die root Platte mache ich das ab und wann manuelle, aber da spielt ja weniger Musik. Daher ist das selten nötig.

fstrimdount:

Code:

#!/bin/bash

# Konfigurationsvariablen
CONFIG_DIR="$HOME/.config/counter"
COUNTER_FILE="$CONFIG_DIR/fstrimcount"
MAX_COUNT=19

# Funktion zum Erstellen des Konfigurationsverzeichnisses, falls es nicht existiert
create_config_dir() {
    if [[ ! -d "$CONFIG_DIR" ]]; then
        mkdir -p "$CONFIG_DIR" || { echo "Fehler: Konnte Verzeichnis $CONFIG_DIR nicht erstellen" >&2; exit 1; }
    fi
}

# Funktion zum Lesen des Zählerstands
read_counter() {
    if [[ ! -f "$COUNTER_FILE" ]]; then
        echo 0 > "$COUNTER_FILE"
    fi
    COUNTER=$(cat "$COUNTER_FILE")
    if ! [[ "$COUNTER" =~ ^[0-9]+$ ]]; then
        echo "Fehler: Ungültiger Zählerstand in $COUNTER_FILE" >&2
        exit 1
    fi
}

# Funktion zum Aktualisieren des Zählerstands
update_counter() {
    COUNTER=$((COUNTER + 1))
    if [[ $COUNTER -gt $MAX_COUNT ]]; then
        COUNTER=0
        echo "fstrim wird ausgeführt .."
        echo "$COUNTER" > "$COUNTER_FILE"
        return 0
    else
        echo "Kein fstrim!"
        echo "$COUNTER" > "$COUNTER_FILE"
        return 1
    fi
}

# Hauptfunktion
main() {
    create_config_dir
    read_counter
    echo "Aktueller fstrim count: $COUNTER"
    update_counter
    exit $?
}

# Skript ausführen
main



Was haltet Ihr davon?
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5304

PostPosted: Sun Oct 20, 2024 10:30 am    Post subject: Reply with quote

Das eix-update direkt aufrufen kannst man sich sparen.
das eix paket liefert ein script mit was man als postsync aktion aktivieren kann.
Das script heißt "/usr/bin/eix-postsync"
Und wenn man das script als symlink unter "/etc/portage/postsync.d" verlinkt (z.b. mit namen 50-eix-postsync) dann wird die eix datenbank direkt nach dem sync via emaint/portage aktualisiert.

Ist bei dir /tmp auf einem Datenträger abgelegt? Meist ist das als tmpfs im RAM gemounted. Wobei man das im falle von systemd nicht selbst machen muss AFAIK aber wenn man openrc nutzt. (https://wiki.gentoo.org/wiki/Tmpfs)

Was ist dein gedanke dabei fstrim nur bei jedem 20. Update laufen zu lassen?
Es häufiger laufen zu lassen ist kein Problem für eine SSD. Da ich systemd nutze kann ich da jetzt nur davon reden wie es dort gelöst ist.
Für systemd gibt es einen timer (von sys-apps/util-linux bereitgestellt), welcher fstrim einmal pro woche laufen lässt.
Und hier wird fstrim für alle Dateisysteme, welcher in der fstab in "/proc/self/mountinfo" aufgeführt sind.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2638
Location: Heidelberg - Germany

PostPosted: Sun Oct 20, 2024 11:02 am    Post subject: Reply with quote

Angeblich sollen SSDs bei zu häufigem fstrim schneller verschleißen. Evtl. ist diese Info ja falsch. Bis jetzt dachte ich es wäre so. /var/tmp und /tmp sind bei mir auf separaten SSDs gemountet.
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5304

PostPosted: Sun Oct 20, 2024 3:10 pm    Post subject: Reply with quote

Erdie wrote:
Angeblich sollen SSDs bei zu häufigem fstrim schneller verschleißen. Evtl. ist diese Info ja falsch. Bis jetzt dachte ich es wäre so. /var/tmp und /tmp sind bei mir auf separaten SSDs gemountet.

Nach meinem Kenntnisstand ist das nicht der fall. Nur kontinuierliches trimming (quasi bei jeder schreibaktion) wird nicht empfohlen.
z.b. aus der arch wiki seite:
https://wiki.archlinux.org/title/Solid_state_drive#TRIM

Bezüglich das Trim schlecht wäre hab ich nichts auf die schnelle gefunden. Aber ein paar Erklärung von SSD Herstellern selbst was Trim genau macht (heir crucial bzw. kingston):
https://www.crucial.com/articles/about-ssd/what-is-trim
https://www.kingston.com/en/blog/pc-performance/ssd-garbage-collection-trim-explained
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum