Zum Inhalt

Linux Tipps & Tricks

📅 Erstellt: 10.08.2026 🔄 Aktualisiert: 20.09.2026

Systemd Timer erstellen für User

Um täglich, 12-stündlich, wöchentlich etc. ein .sh Skript aufzurufen kann man sich Systemd zu Nutze machen.
Hierzu braucht man eine Timer-Datei .timer und eine Service-Datei .service.

Beispiel für eine .service Datei

[Unit]
Description=Startet mein Shell-Skript

[Service]
Type=oneshot
ExecStart=/pfad/zu/deinem/skript.sh

ACHTUNG! Möchte man das Benutzer Heim-Verzeichnis nutzen schreibt man %h, $HOME bzw ~ funktionieren nicht!

Beispiel für eine .timer Datei

[Unit]
Description=Timer fuer mein Shell-Skript

[Timer]
# Waehle eines der Beispiele unten fuer OnCalendar:
OnCalendar=Mon *-*-* 14:30:00

# Verpasste Ausfuehrungen (z. B. wenn der PC aus war) nach dem Start nachholen
Persistent=true

[Install]
WantedBy=timers.target

Beispiele für OnCalendar=

  • Alle 12 Stunden (um 00:00 und 12:00 Uhr):
    OnCalendar=00/12:00:00

  • Alle 3 Tage (z. B. jeweils um 03:00 Uhr morgens):
    OnCalendar=*-*-1/3 03:00:00 (läuft am 1., 4., 7., ... Tag des Monats)

  • 1x die Woche an einem bestimmten Tag/Uhrzeit (z. B. jeden Montag um 14:30 Uhr):
    OnCalendar=Mon *-*-* 14:30:00

  • Täglich um 9 und 18 Uhr:
    OnCalendar=*-*-* 09,18:00:00
    oder lesbarer:
    OnCalendar=09:00:00
    OnCalendar=18:00:00

Hat man diese beiden Dateien (Service- und Timer-Datei) in ~/.config/systemd/user erstellt, wird die Konfiguration neu geladen:
systemctl --user daemon-reload
Dann den Timer aktivieren und sofort starten:
systemctl --user enable --now mein-skript.timer

Weitere Befehle

Aktive Timer und nächste Ausführungszeiten anzeigen:
systemctl --user list-timers
Status des Timers prüfen:
systemctl --user status mein-skript.timer
Skript manuell ausführen bzw. Timer manuell triggern:
systemctl --user start mein-skript.service
Zeit-Syntax vorab prüfen (wann der nächste Lauf wäre):
systemd-analyze calendar "Mon *-*-* 14:30:00"

Tipp: Damit der User-Timer auch nach dem Abmelden weiterläuft (z. B. auf einem Server), muss für deinen Benutzer einmalig das Linger-Feature aktiviert werden: loginctl enable-linger $USER. War/ist bei mir schon aktiviert.

Einen Befehl mit Parametern für alle *.EXT ausführen

for f in *.ext; do <Befehl> --option -o "$f"; done
Könnte man so lesen: "Für alle Dateien mit Erweiterung *.ext jeweils in Variable f pro Durchgang (f hat jeweils einen Dateiname im Speicher) mache folgendes: blabla mit "$f", nächste Datei bis alle durch sind. Fertig.

Ein Skript in Dolphin integrieren

Für .mds und .iso Dateien habe ich ein Konvertierungsskript in .bin/.cue geschrieben. Diese Skript möchte ich nun für besagte Dateien in Dolphin integrieren.

Falls noch nicht vorhanden das Verzeichnis dazu erstellen:
mkdir -p ~/.local/share/kio/servicemenus

Desktop-Datei für Dolphin anlegen

~/.local/share/kio/servicemenus/convert_mdsiso_to_bincue.desktop:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/x-cd-image;application/x-iso9001-image;application/x-mds;application/octet-stream;
Actions=convertToBinCue;
X-KDE-Submenu=Konvertieren

[Desktop Action convertToBinCue]
Name=MDS/ISO in .bin / .cue umwandeln (PicoGUS)
Icon=media-optical
Exec=konsole -e bash -c '"$HOME/bin/conv_mdsiso_to_bincue.sh" "$1"' _ "%f"

Hier noch ein verfeinertes Beispiel bald™ einfügen :p

Avidemux mit Hardware-Encoder bauen

Intel QuickSync und nvidia NVENC sollen nutzbar werden.
Aus dem AUR: https://aur.archlinux.org/packages/avidemux-core-git?all_deps=1#pkgdeps
Ich nutze da die QT5 GUI zusätzlich.

Für NVIDIA: Arch-Paket extra/ffnvcodec-headers ist erforderlich
Für Intel: Arch-Paket onevpl-intel-gpu erforderlich

Danach avidemux-core-git natürlich neu bauen:
yay -S --rebuild --answerclean All avidemux-core-git

Wenn Intel Encoder dann immer noch nicht lädt, gibts hier noch einen Dirty Fix:

fake_va_intel.c:

#include <fcntl.h>
#include <va/va.h>
#include <va/va_drm.h>

VADisplay vaGetDisplay(void *dpy) {
    int fd = open("/dev/dri/renderD129", O_RDWR);
    if (fd < 0) return NULL;
    return vaGetDisplayDRM(fd);
}

Kompilieren:
gcc -shared -fPIC -o libva_intel_override.so fake_va_intel.c -lva -lva-drm

Avidemux aufrufen mit:
LD_PRELOAD=./libva_intel_override.so LIBVA_DRIVER_NAME=iHD avidemux3_qt5

Die libva_intel_override.so nach ~/.local/lib kopieren/verschieben.

Wrapper Skript avidemux-intel.sh:

#!/bin/bash
export LIBVA_DRIVER_NAME=iHD
export LD_PRELOAD="$HOME/.local/lib/libva_intel_override.so"
exec avidemux3_qt5 "$@"

Im Startmenü Avidemux zu Avidemux NVIDIA umbenennen, eine Kopie erstellen und Avidemux Intel nennen, sowie als Startprogramm das o.g. Script eintragen: avidemux-intel.sh.

Docker

Versionsabfrage

Z.B. für PiHole:
sudo docker exec -it pihole pihole -v

Auszug:

$ sudo docker exec -it pihole pihole -v
Core version is v6.4.1 (Latest: v6.4.3)
Web version is v6.5 (Latest: v6.6)
FTL version is v6.6 (Latest: v6.7)

Update

Am Beispiel PiHole:
sudo docker compose pull && sudo docker compose up -d && sudo docker image prune -f

Bedeutung:
* compose pull: Lädt das aktuellste Image pihole/pihole:latest herunter
* compose up -d: Ersetzt den laufenden Container durch die neue Version, sämtliche etc-Dateien bleiben erhalten
* image prune -f: Entfernt das alte Image

Auszug:

$ sudo docker exec -it pihole pihole -v
Core version is v6.4.3 (Latest: v6.4.3)
Web version is v6.6 (Latest: v6.6)
FTL version is v6.7 (Latest: v6.7)

Numlock standardmäßig einschalten

SDDM KDE Plasma Wayland

Funktioniert derzeit (seit 2023, wie ich sehe!) NICHT im Anmeldebildschirm wegen Wayland. Siehe: Arch Linux Wiki und Github Issue

Desktop KDE

42bb637de6ba40b43bea27d93c8a6d62.png

Festplatten Image .img mounten

Mit Loop-Device und automatischem Paritionsscan:
sudo losetup -fP /pfad/zur/datei.img

Dann mit KDE-Dialog mounten oder mit zum Beispiel:
sudo mount /dev/loop0p1 /mnt/img

Abmelden:
sudo umount /mnt/img

Loop-Device entfernen:
sudo losetup -d /dev/loop0

Bilder skalieren und von 16:9 auf 4:3 bringen

Schleife erstellen, für zum Beispiel alle .png:
for file in *.png; do magick "$file" -scale 200% -resize 75x100%! "200p/${file%.*}_200p43.png"; done

Parameter:

  • -scale 200% - 200% Vergrößerung nearest neighbor
  • -resize 75x100%! - Breite auf 75% gestaucht, während Höhe 100% bleibt. Das ! zwingt ImageMagick das Seitenverhältnis zu ignorieren