Featured image of post Systemd-Timer per CLI erstellen – einfach, schnell, nervenschonend

Systemd-Timer per CLI erstellen – einfach, schnell, nervenschonend

Ein praktisches kleines Tool, das systemd .service und .timer Units per CLI erzeugt – als moderne Alternative zu cron.

Wer schon mal versucht hat, systemd-Timer von Hand zu schreiben, weiß: So richtig Spaß macht das nicht. Zwischen .service- und .timer-Dateien, Pfadangaben, und OnCalendar-Syntax kann man sich schnell vertun. Genau dafür habe ich mir ein kleines Tool gebaut: systemd-timer.

Was macht das Ding?

Ganz einfach: Du rufst ein CLI auf, gibst ein paar Parameter an, und das Tool schreibt dir die passenden .service- und .timer-Units – inklusive Logging, Abhängigkeiten und allem, was systemd eben braucht. Keine Vorlage kopieren, keine Tippfehler mehr, kein Nachdenken darüber, ob das jetzt WantedBy=timers.target heißen muss oder nicht.

Warum nicht einfach cron?

Klar, cron funktioniert. Aber systemd hat ein paar Vorteile:

  • Besseres Logging (auch in Datei)
  • Einfache Integration mit anderen Diensten (z. B. Netzwerkwarten)
  • Funktioniert auch pro Benutzer (ohne root-Rechte)
  • Alles bleibt in einer Sprache: systemd

Das CLI hilft dabei, die Einstiegshürde zu senken und trotzdem “richtig” mit systemd zu arbeiten.

Was kann systemd-timer?

  • .service + .timer-Dateien erstellen
  • --user-Timer (für Desktop- oder Container-Umgebungen)
  • Logging per --logfile
  • Standard-Optionen wie:
    • --exec, --calendar, --after, --environment
    • --description, --output, --dry-run
  • CLI basiert auf Cliffy, getippt mit Deno
  • Plattformunabhängige Installation per Shell-Skript

Ein Beispiel, das du sofort nutzen kannst

1
2
3
4
5
6
systemd-timer create \
  --exec "/usr/local/bin/backup.sh" \
  --calendar "Mon..Fri 02:00" \
  --description "Backup Job" \
  --user \
  --logfile "/var/log/backup.log"

Ergebnis:

  • ~/.config/systemd/user/backup.service
  • ~/.config/systemd/user/backup.timer

Aktivieren:

1
2
systemctl --user daemon-reload
systemctl --user enable --now backup.timer

Installation: Ein Einzeiler

1
curl -fsSL https://git.0xmax42.io/maxp/systemd-timer/raw/branch/main/scripts/install.sh | sh

Das Skript erkennt automatisch deine Architektur (amd64/arm64), lädt die passende Binary und prüft sie mit SHA256. Und ja, du kannst dir den Code vorher anschauen, bevor du ihn durch die Leitung jagst.

Entwicklung & Test

Das Tool ist komplett mit TypeScript/Deno geschrieben, ordentlich typisiert und testgetrieben. Alles Wichtige ist modular aufgebaut, damit man es auch als Bibliothek verwenden könnte.

Tests laufen einfach per:

1
deno task test

Fazit

systemd-timer ist kein Monster-Tool mit 1000 Optionen – sondern genau das, was man sich wünscht, wenn man öfter mal einfache Tasks zeitgesteuert per systemd laufen lassen will, ohne sich jedes Mal die Finger wundzuschreiben. Es richtet sich an Leute, die lieber deklarativ als improvisiert arbeiten.

Quellcode, Releases und alles Weitere findest du hier: 👉 git.0xmax42.io/maxp/systemd-timer

Erstellt mit Hugo
Theme Stack gestaltet von Jimmy