Hallo.
Ich nutze SUSE 13.2 mit ext4 auf einer SSD. SUSE liefert für btrfs maintainance scripte. Dabei wird u.a. auch für btrfs trim wöchentlich ausgeführt. Kürzlich habe ich einem Script zu btrfs gesehen, dass es nicht weitermachen soll wenn das Dateisystem nicht btrfs ist. Also hier der verursacher mit dem ich die Notwendigkeit für meinen Script begründe:
Da ich nicht so super bewandert bin was bash /shell und überhaupt scripte angeht, würde ich mich freuen wenn ihr den anschauen würdet ob das so o.k. ist.
Er läuft momentan als cron.weekly; Er läuft auch durch. Aber wie halt?
- tmp für die Pipe habe ich hier gewählt, da es ein tmpfs im RAM ist bei mir.
- Angemeldete Desktopnutzer erhalten ausserdem eine Nachricht mithilfe von wall.
Gruß,
R
Ausgabe im Journal (run-crons):
Ich nutze SUSE 13.2 mit ext4 auf einer SSD. SUSE liefert für btrfs maintainance scripte. Dabei wird u.a. auch für btrfs trim wöchentlich ausgeführt. Kürzlich habe ich einem Script zu btrfs gesehen, dass es nicht weitermachen soll wenn das Dateisystem nicht btrfs ist. Also hier der verursacher mit dem ich die Notwendigkeit für meinen Script begründe:
Beweis:/usr/share/btrfsmaintenance/btrfs-trim.sh
Code:if [ $(stat -f --format=%T "$MNT") != "btrfs" ]; then echo "Path $MNT is not btrfs, skipping" continue
Jedenfalls verstehe ich auf dieser Grundlage ein eigenes batched discard script zu benötigen. Dann habe ich einige andere scripte gesehen die in eine Datei schreiben. Jetzt dachte ich mir ich möchte das im Journal haben. Deswegen hab ich mir den etwas umgebaut.ext2/ext3Code:WILD-THING:/home/disk # stat -f --format=%T "/home"
Da ich nicht so super bewandert bin was bash /shell und überhaupt scripte angeht, würde ich mich freuen wenn ihr den anschauen würdet ob das so o.k. ist.
Er läuft momentan als cron.weekly; Er läuft auch durch. Aber wie halt?
- tmp für die Pipe habe ich hier gewählt, da es ein tmpfs im RAM ist bei mir.
- Angemeldete Desktopnutzer erhalten ausserdem eine Nachricht mithilfe von wall.
Gruß,
R
Code:
#!/bin/sh
### Trim script for SSD |trim.sh| ###
# - sends a message whats going on to logged in users with wall
# - Logs trim output to journal
# Filesystems to trim:
FS1=/
FS2=/home
# Setup logging:
LOGPIPE=/tmp/trimlogpipe.out;
# Check if Logpipe exists otherwise clean it prior:
if [ -e !$LOGPIPE ]
then mkfifo $LOGPIPE
elif [ -e $LOGPIPE ]
then rm $LOGPIPE & mkfifo $LOGPIPE
fi
# Start logging to journal with identifier "trim.sh"
systemd-cat -t 'trim.sh'< $LOGPIPE &
exec 3>$LOGPIPE
# message for desktop users: (not logged)
TEXT="Starting trim for $FS1 and $FS2 the system might slow down while it is running."
wall -n $TEXT
# Execute the trim command and log to journal:
echo "*** $TEXT ***" >&3;
fstrim -v $FS1 >&3;
fstrim -v $FS2 >&3;
# closing file descriptor 3 closes the fifo
exec 3>&-
Und die Nachricht von wall erscheint dann beim Nutzer beispielsweise bei KDE als Benachrichtigung im Infobereich.Sep 10 08:59:58 WILD-THING trim.sh[5126]: *** Starting trim for / and /home the system might slow down while it is running. ***
Sep 10 08:59:58 WILD-THING trim.sh[5126]: /: 22 MiB (23035904 Bytes) getrimmt
Sep 10 08:59:58 WILD-THING trim.sh[5126]: /home: 600 KiB (614400 Bytes) getrimmt