Zum Inhalt springen

Benutzer:Tuxnix: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Tuxnix (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Tuxnix (Diskussion | Beiträge)
 
(188 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Nur für eigene Zwecke
{{SEITENTITEL:Benutzer:Tuxnix}}{{righttoc}}


=Kopie aus AfE nach den ersten Boot=
Überarbeitung von Systemd/Timers
= Entwurf =


===Netzwerk erneut herstellen===
{{righttoc}}
Das Netzwerk kann jetzt, wie oben im Kapitel ''Netzwerkverbindung herstellen'', mit dem richtigen Gerätenamen eingerichtet oder wieder mit {{ic|dhcpcd enp4s0}} gestartet werden.
Timer bieten die Möglichkeit Aufgaben zeitlich zu steuern. Die Timer-Unit besteht aus einer {{ic|.timer}} Datei die eine {{ic|.service}} Datei ansteuert. Timer unterstehen [[systemd]] und müssen mit dem systemctl Befehl aktiviert werden. Eine Alternative hierzu bietet [[cron]].


Anmerkung: Sollte die Netzwerk-Verbindung via "netctl -u wireless-wpa" gestartet worden sein, funktioniert dies nach der Installation nicht mehr, da "wpa" nicht mit installiert wird. Dies kann man wie folgt abändern:
== Beispiel ==
Erneutes Starten mit der boot-CD, mounten der root-Partition mit "mount /dev/sda1 /mnt". Dann erneutes verbinden mit dem Netzwerk und installieren des Paketes wpa_supplicant ins root-Verzeichnis: "pacstrap /mnt wpa_supplicant". Nach einem Neustart kann sich nun auch die Festplatteninstallation via wpa mit dem Netzwerk verbinden!
{{hc|1=beispiel.timer|2=
[Unit]
Description=Kurz-Beschreibung


===Regelmäßiges Aktualisieren===
[Timer]
Arch Linux gehört zu den Distributionen, welche sehr schnell aktuelle Softwarepakete zur Verfügung stellen. Darum sollte man ein installiertes Arch Linux mittels pacman aktualisieren und sich angewöhnen, dies regelmäßig zu tun. Es ist sehr hilfreich, vorher auf [https://www.archlinux.de/?page=Start Arch Linux - Aktuelle Neuigkeiten] nachzusehen, ob sich etwas Wichtiges am Gesamtsystem oder an einzelnen Komponenten geändert hat. Es werden erforderliche Lösungsvorschläge und Anleitungen beschrieben.
OnBootSec=1h 30m


====Der Paketmanager pacman====
[Install]
[[Pacman]] ist der '''pac'''kage '''man'''ager von Arch Linux. Er verwaltet das gesamte Paketsystem, also die Installation, das Löschen, das Downgraden von Paketen u.v.m.; er ist auch zuständig für die Verwaltung selbst kompilierter Programme, das automatische Lösen von Paket-Abhängigkeiten sowie das entfernte und lokale Suchen nach Paketen.
WantedBy=basic.target}}


=====Konfiguration von pacman=====
{{hc|1=beispiel.service|2=
* /etc/pacman.conf
[Unit]
pacman wird über die Datei {{ic|/etc/pacman.conf}} konfiguriert. Siehe weitere Infos unter [[pacman]].
Description=Kurz-Beschreibung
* /etc/pacman.d/mirrorlist
pacman benötigt die Datei {{ic|/etc/pacman.d/mirrorlist}}, welche die Serveradressen für den Download von Paketen enthält. Siehe weitere Infos unter [[pacman]].
Eine Optimierung der Liste der Spiegelserver kann mittels {{ic|reflector}} erfolgen.


===Die Schönheit des Rolling Release===
[Service]
Arch Linux ist eine '''Rolling Release''' Distribution, was bedeutet, dass es im Vergleich zu anderen Linux-Distributionen keine Versionsnummern oder -namen gibt. Diese Form der Verwaltung verzichtet darauf, das ganze System neu installieren zu müssen, um es aktuell und damit auch sicher zu halten – man hat es nun selbst in der Hand, jederzeit upzudaten. Die Benutzung eines Rolling-Release setzt auch ein gewisses Maß an Eigenverantwortung voraus. So ist man z.B. gut beraten, sich vor einer Systemaktualisierung über aktuelle Änderungen oder Schwierigkeiten, die dabei auftreten könnten, zu informieren. Aktuelle Informationen findet man [https://www.archlinux.de/?page=Start hier]{{Sprache|de}}, [https://bbs.archlinux.de/viewforum.php?id=257 hier]{{Sprache|de}},[https://www.archlinux.org/ hier]{{Sprache|en}} und [https://www.archlinux.org/news/ hier]{{Sprache|en}}. Außerdem ist es empfehlenswert, die [https://mailman.archlinux.org/mailman/listinfo/arch-announce Arch-Announce]{{Sprache|en}} Mailingliste zu abonnieren, um stets auf dem neuesten Wissenstand etwaige Änderungen betreffend zu sein.
ExecStart=/usr/bin/beispiel.sh}}


====Achtung bei Systemupdates mit neuem Kernel====
Service- und Timerdateien werden für
Falls der Kernel ein größeres Update erfährt, werden Module, wie zum Beispiel ''' nvidia''' und '''madwifi''' (wird später installiert, falls nötig), unbenutzbar, da die neuen, aktualisierten Paketversionen solcher Module gegen den neueren Kernel gebaut wurden, aber das System derzeit einen älteren verwendet. Ein Neustart wird nötig sein.
* systemweite Dienste im Ordner {{ic|/etc/systemd/system/}}
* userbezoge Dienste unter {{ic|~/.config/systemd/user/}} gespeichert.


Ebenso könnte nach einer langen Pause ohne Aktualisierung bzw. bei der Aktualisierung eines frischen Systems der Fall eintreten, dass gleichzeitig mit dem neuen Kernel andere Programmpakete oder neue Versionen von bereits vorhandenen mitinstalliert werden, die wichtige Neuerungen beinhalten, auf die der neue Kernel angewiesen ist. Dann ist es wahrscheinlich, dass der Kernel zwar aktualisiert wird, aber ''mkinitcpio'' Fehler beim Durchlaufen der Hooks meldet (wie etwa fehlende Udev-Regeln beim Hook "filesystems"). Das würde dazu führen, dass das System dann nicht mehr startet und etwa von einem anderen Linux-System oder der Live-CD repariert werden muss! Um dergleichen zu vermeiden, genügt es nach so einem Update i.d.R., das Initramfs noch einmal neu zu generieren, und zwar folgendermaßen:
Timer und Service müssen dabei den gleichen Namen tragen. Z.B.:
mkinitcpio -p linux
({{ic|'''beispiel'''.timer}} und {{ic|'''beispiel'''.service}}).


===Einen Benutzer hinzufügen und Gruppen wählen===
== De- / Aktivierung ==
Tägliche Arbeiten sollten nicht mit dem Root-Account gemacht werden, da dieser für administrative Aufgaben vorgesehen ist und ein Arbeiten damit gefährlich sein kann. Deshalb wird nun ein normaler Benutzer hinzugefügt. Beachte, dass Benutzernamen nur Kleinbuchstaben und Sonderzeichen enthalten dürfen:
Mit {{ic|systemctl enable --now}} startet der Timer unverzüglich und permanent, sodass er auch nach einem Neustart aktiv ist. Ohne {{ic|--now}} werden {{ic|enable}} oder auch {{ic|disable}} erst nach einem reboot wirksam. Ein {{ic|start}} bzw. {{ic|stop}} wirken sich hingegen nur auf die laufende Sitzung aus. Bei der ersten Initialisierung legt das System automatisch einen passenden [[ln|Symlink]] an.


In diesem Beispiel heißt der Benutzer duda
Timer für systemweite Dienste werden mit Rootrechten aktiviert:
# systemctl enable --now <name>.timer


  useradd -m -g users -s /bin/bash duda
Timer im Userbereich werden mit der Option {{ic|--user}} und mit Userrechten aktiviert:
  $ systemctl --user enable --now <name>.timer


passwd duda
Aktualisierung von Timer und Sevice nach einer Änderung:
  Geben Sie ein neues UNIX-Passwort ein:geheim
  # systemctl reenable --now <name>.timer
  Geben Sie das neue UNIX-Passwort erneut ein:geheim
  $ systemctl --user reenable --now <name>.timer
passwd: Passwort erfolgreich geändert


== Management ==
Auflistung der Auslösezeiten:
systemctl list-timers --all
(Sollen nur die aktiven Timer angezeigt werden genügt auch ein {{ic|systemctl list-timers}}).


Falls der Benutzer wieder entfernt werden soll, so kann das mit
Statusmeldungen:
  userdel -r duda
  systemctl status <name>.timer
gemacht werden.
systemctl status <name>.service


Ein weiteres wichtiges Werkzeug könnte noch installiert werden, um ein Kommando mit Root-Rechten ausführen zu können.
Journaleinträge z.B.:
pacman -S sudo
  journalctl -u <name>.service -g Started
Damit der Benutzer Root-Rechte bekommt, muss eine Konfiguration verändert werden. Eingabe von:
  EDITOR=nano visudo
oder
nano /etc/sudoers
Suchen der folgenden Zeile (steht unterhalb von "## Uncomment to allow members of group wheel to execute any command"):
  # %wheel ALL=(ALL) ALL
und entfernen des Kommentatorzeichens und des Leerzeichens.
%wheel ALL=(ALL) ALL
Den Benutzer zu der Gruppe wheel hinzufügen
gpasswd -a duda wheel


Um dem Nutzer noch Rechte für Audio etc. zu geben, kann er noch in die Gruppen {{ic|audio}}, {{ic|video}}, {{ic|games}}, {{ic|power}} hinzugefügt werden.
== Die [Timer] Sektion ==
( Für die Konfiguration der Sektionen [Unit], [Install] und [Service] sei an dieser Stelle auf die entsprechenden man pages verwiesen)


===Weitere nützliche Dienste===
In der Timer Sektion können auch mehrere Zeitangaben gemacht werden. Sie beeinflussen sich nicht und werden alle zu ihrem jeweiligen Zeitpunkt ausgeführt.


Sollte das System auf einer SSD betrieben werden, welche TRIM unterstützt, sollte der {{ic|fstrim.timer}} aktiviert werden:


# systemctl enable --now fstrim.timer


Jetzt, das heißt bevor wir uns der grafischen Oberfläche und/oder Multimedia zuwenden, ist ein guter Zeitpunkt, ein paar zusätzliche Dienste zu installieren und zu aktivieren.
=== Kalendarische Zeitangaben ===
* OnCalendar=


# pacman -S acpid dbus avahi cups
==== Absolute kalendarische Zeitangaben ====


Diese Dienste müssen natürlich auch jeweils explizit gestartet werden. Um dies automatisch beim Booten zu tun, muss systemd dazu angewiesen werden. Dies geschieht durch:
OnCalendar=Thu,Fri 2026-*-1..5 11:12:13


# systemctl enable <Dienstname>
(Der service wird jeweils um 11 Uhr 12, zwischen dem 1. und 5. Kalendertag eines jeden Monats des Jahres 2026 ausgelöst, wenn dies Donnerstage oder Freitage sind.)


Für diese Beispiele:
Die Angabe von Wochentagen erfolgt immer in Englisch und ist optional.
Jede Rubrik kann mit "," für die Aufzählung oder mit ".." für von bis versehen werden oder durch "*" für beliebig ersetzt werden.
# systemctl enable acpid
# systemctl enable avahi-daemon
# systemctl enable cups.service


Auch ist es sinnvoll, einen Netwerkservice für den Internetzugang automatisch zu laden:
Die Angaben erfolgen nach diesem Schema:
OnCalendar=Wochentag(englisch/optional) Jahr-Monat-Tag Stunde:Minute:Sekunde


Dies können Services wie NetworkManager erledigen. Mehr dazu unter https://wiki.archlinux.de/title/Daemons und unter https://wiki.archlinux.de/title/Daemons/Liste.
==== Periodische kalendarische Zeitangaben ====


===Cronjobs ausführen lassen===
OnCalendar=weekly
Einige Pakete legen sogenannte Cronjobs an. Das sind Befehle, die zu bestimmten Zeiten automatisch ausgeführt werden. Im Normalfall braucht man sich um die Cronjobs nicht zu kümmern. Mehr zu diesem Thema unter [[cron]]
# pacman -S cronie
# systemctl enable --now cronie


Als Alternative zu o.g. klassischen Conrojobs können oft auch ''[https://www.freedesktop.org/software/systemd/man/systemd.timer.html systemd.timer]''s genutzt werden, ohne zusätzliche Software installieren zu müssen.
Auch diese Werte sind möglich.
minutely, hourly, daily, monthly, weekly, yearly, quarterly, semiannually


===Automatische Zeiteinstellung===
Entsprechend den oberen Notierung, kann dafür auch diese Schreibweise genutzt werden.
Wer die Zeit automatisch korrigieren lassen will, kann das mit ''systemd-timesyncd'' machen.  
  *-*-* *:*:00, *-*-* *:00:00, *-*-* 00:00:00, *-*-01 00:00:00, Mon *-*-* 00:00:00, *-01-01 00:00:00, *-01,04,07,10-01 00:00:00, *-01,07-01 00:00:00
  systemctl enable --now systemd-timesyncd.service


Die Zeit wird nach wenigen Sekunden korrekt sein.<br>
==== Testen von OnCalendar= Zeitangaben ====
Um zu sehen, ob die Uhrzeit nun auch wirklich korrekt ist, kann man folgenden Befehl nutzen:
Kalendarische Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden:
  date
  systemd-analyze calendar "<Zeitangabe>"
Anschließend kann man die Hardwareuhr oder auch RTC oder CMOS-Uhr auf der Hauptplatine korrigieren.
hwclock -w


Man muss unterscheiden zwischen einer sogenannten Systemzeit und einer Hardwareuhr auf der Hauptplatine des Rechners. Die Hardwareuhr ist die CMOS-Uhr, auch Echtzeituhr oder RTC (real time clock) genannt. Die Systemzeit ist die Zeit, die der Linuxkernel gerade hat (nur so grob). Beim Einschalten übernimmt Linux (Systemzeit) die Hardwareuhrzeit. Beim Herunterfahren wird die Systemzeit '''nicht''' an die Hardwareuhr wieder übergeben. Zur Beachtung: Werden mehrere Betriebssysteme benutzt, sollte nur ein Betriebssystem die Hardwareuhr korrigieren.
Mit der Option {{ic|--iterations <N>}} werden weitere Auslösezeitpunkte aufgelistet.


=Kopie aus AfE:=
=== Relative Zeitangaben ===
(Stehen in Relation zu anderen Ereignissen)


===Installation eines Bootloaders===
Beispiel:
OnBootSec=2d 1h 30m


* Als Bootmanager für BIOS-Boot-Systeme stehen [[Grub]] und [[syslinux]] zur Verfügung.
====Einmalige Ereignisse====
* Für UEFI-BOOT-Syteme kann als Bootloader [[systemd-boot]] oder [[EFISTUB]] oder [[Grub]] oder [[rEFInd]] eingesetzt werden.<br>
* OnBootSec=  - Die Zeitspanne seit dem Booten des Rechners.
* OnStartupSec= - Die Zeitspanne seit dem Start von systemd.
* OnActiveSec= - Die Zeitspanne seit Aktivierung der Timer-Unit.


====Installation des GRUB Bootloaders====
====Wiederkehrende Ereignisse====  
Für Benutzer von intel-ucode bitte folgende Seite zusätzlich beachten: [[Microcode]].<br>
* OnUnitActiveSec= - Die Zeitspanne seit dem der Timer das letzte mal den Job ausgelöst hat.
Falls bei einen BIOS-Boot-System von einem Datenträger mit GPT-Partitionstabelle gebootet werden soll, benötigt Grub eine zusätzliche Partition von der Größe von 1MiB und dem Partitionstyp ef02. Siehe [[GRUB#Fehlermeldung_von_GRUB | Grub]].<br><br>
* OnUnitInactiveSec= - Die Zeitspanne seit der Beendigung des letzten Jobs.
Installation des Pakets:
pacman -S grub
Booten per '''BIOS'''
grub-install /dev/sda
Booten per '''UEFI'''


Installation des EFI Bootmanagers (sonst kommt die Fehlermeldung: efibootmgr: not found):
Folgende Einheiten können für relative Zeitangaben gewählt werden:
  pacman -S efibootmgr
  usec, us
  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=<Boot-Name>
  msec, ms
Alternativ kann man
seconds, second, sec, s
  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=<Boot-Name> --recheck --debug
minutes, minute, min, m
verwenden, um zusätzliche Informationen zu bekommen, falls es zu einem Fehler kommt. <br>
hours, hour, hr, h
Wenn man einen etwas längeren Namen mit Leerzeichen für Grub geben möchte, muss man einfach 2 Anführungszeichen anbringen:
  days, day, d
  --bootloader-id="Ein sehr langer Name für den Grub Bootloader, der auch so im UEFI angezeigt wird :D"
weeks, week, w
months, month, M (definiert als 30.44 Tage)
  years, year, y (definiert als 365.25 Tage)
(Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.)


Weitere '''Konfiguration''' nach BIOS oder UEFI grub-install:
==== Testen Relativer Zeitangaben ====
Relative Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden:
systemd-analyze timespan "<Zeitangabe>"


Es kann jetzt die Grub Konfiguration generiert werden.
=== Weitere Optionen in [Timer] ===
  grub-mkconfig -o /boot/grub/grub.cfg
* AccuracySec= -  Bestimmt die Genauigkeit des Auslösezeitpunkts (default 1 min).
* RandomizedDelaySec= - Wird verwendet damit nicht mehrere Timer exakt gleichzeitig z.B um 00:00 loslegen.
* WakeSystem= - Weckt das System aus dem suspend mode.
* Unit= - Als default ist dieser Wert identisch mit dem Suffix der .timer Datei (s. oben). Bei Verwendung muss eine Datei mit dem hier angegebenen Namen existieren. Eine Verschachtelung von Units ist möglich.
* Persistent=true - Bewirkt, dass ein versäumter Job beim nächsten Rechnerstart unverzüglich nachgeholt wird.
* RemainAfterElapse=false - beendet den Timer nach einmaliger Ausführung.


Sollte '''grub-mkconfig''' dabei eine Fehlermeldung wie
== Manpages ==
  ...
  error: out of memory.
  error: syntax error.
  error: Incorrect command.
  error: syntax error.
  Syntax error at line 164
  ...


liefern (siehe auch: [https://bugs.archlinux.org/task/38041 "FS#38041 - grub 1:2.00.1282.g5ae5c54-1 will not generate grub.cfg file syntax errors"], sollte das Anhängen folgender Zeile an '''/etc/default/grub''':
systemctl, systemd, systemd-analyze, systemd.directives, systemd.service, systemd.socket, systemd.special, systemd-system.conf, systemd.time, systemd.timer, systemd.unit
  # fix broken grub.cfg gen
  GRUB_DISABLE_SUBMENU=y


und ein erneuter Aufruf von '''grub-mkconfig''' Abhilfe schaffen.
== Siehe auch ==
* [[systemd]]
* [[systemd/Eigener Service|Einen eigenen systemd-Service erstellen]]
* [[Automatische Sicherung (Beispiel)]]


====Installation des Syslinux Bootloader====
== Weblinks ==
Wenn bereits ein Linux-Bootloader installiert ist, kann dieser Punkt übersprungen werden. Der bereits vorhandene Bootloader muss natürlich entsprechend konfiguriert werden.
* [https://documentation.suse.com/de-de/sle-micro/6.0/pdf/Micro-systemd-working-with-timers_de.pdf suse - Arbeiten mit systemd-Zeitgebern ] {{sprache|de}}
* [https://kofler.info/systemd-timer-als-cron-alternative/ Michael Kofler Blog] Anleitung und Beispiel {{sprache|de}}
* [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki section] on ''systemd'' timer services {{sprache|en}}


Zur Beachtung, der Syslinux Bootloader funktioniert nicht bei allen 64bit Dateisystemen wie z.B. ext4. Es muß dann ein anderer Bootloader gewählt werden wie z.B. Grub. Dieser Fehler macht sich erst nach dem Reboot mit folgender Meldung bemerkbar:
[[Kategorie:Systemverwaltung]]
Failed to load ldlinux.c32 . Boot failed: Please change disks and press a key to continue.
[[Kategorie:Service]]


Syslinux kann jetzt installiert werden.<br>
[[en:Systemd/Timers]]
Bei einer GPT-Partitionstabelle muss das Paket gptfdisk zusätzlich installiert werden.
[[fr:Systemd/cron]]
pacman -S gptfdisk
[[ja:Systemd/タイマー]]
pacman -S syslinux
[[ru:Systemd/Timers]]
Mit einem Editor (nano) die Konfigurationsdatei anpassen:
nano /boot/syslinux/syslinux.cfg
Die Zeilen APPEND root=/dev/sda3 ro ändern in
APPEND root=/dev/sda1 rw
oder wenn man die LABEL-Partitionsbezeichnung bevorzugt:
APPEND root=LABEL=p_arch rw
 
Anschließend syslinux auf den Bootsektor installieren
syslinux-install_update -iam
 
=====Manuelle Installation von syslinux=====
 
Falls nicht alles reibungslos ablief, kann Syslinux manuell installiert werden.
 
Dazu wird mit dem Programm ''fdisk'' das Bootflag auf die Partition gesetzt, von der die Bootdaten gebootet werden sollen.<br>
Beispiel, um für /dev/sda1 das Bootflag zu setzen:
fdisk /dev/sda
x
a
p
r
w
 
Dann wird die Partition der Bootdaten, wie z. B. /dev/sda1, unter /boot gemountet und der Bootloader installiert.
mount /dev/sda1 /boot
mkdir /boot/syslinux
extlinux --install /boot/syslinux
 
Jetzt muss noch der MBR von Syslinux auf die Festplatte geschrieben werden.
cat /usr/lib/syslinux/bios/mbr.bin > /dev/sda

Aktuelle Version vom 27. September 2025, 18:28 Uhr

Überarbeitung von Systemd/Timers

Entwurf

Timer bieten die Möglichkeit Aufgaben zeitlich zu steuern. Die Timer-Unit besteht aus einer .timer Datei die eine .service Datei ansteuert. Timer unterstehen systemd und müssen mit dem systemctl Befehl aktiviert werden. Eine Alternative hierzu bietet cron.

Beispiel

beispiel.timer
[Unit]
Description=Kurz-Beschreibung

[Timer]
OnBootSec=1h 30m

[Install]
WantedBy=basic.target
beispiel.service
[Unit]
Description=Kurz-Beschreibung

[Service]
ExecStart=/usr/bin/beispiel.sh

Service- und Timerdateien werden für

  • systemweite Dienste im Ordner /etc/systemd/system/
  • userbezoge Dienste unter ~/.config/systemd/user/ gespeichert.

Timer und Service müssen dabei den gleichen Namen tragen. Z.B.: (beispiel.timer und beispiel.service).

De- / Aktivierung

Mit systemctl enable --now startet der Timer unverzüglich und permanent, sodass er auch nach einem Neustart aktiv ist. Ohne --now werden enable oder auch disable erst nach einem reboot wirksam. Ein start bzw. stop wirken sich hingegen nur auf die laufende Sitzung aus. Bei der ersten Initialisierung legt das System automatisch einen passenden Symlink an.

Timer für systemweite Dienste werden mit Rootrechten aktiviert:

# systemctl enable --now <name>.timer

Timer im Userbereich werden mit der Option --user und mit Userrechten aktiviert:

$ systemctl --user enable --now <name>.timer

Aktualisierung von Timer und Sevice nach einer Änderung:

# systemctl reenable --now <name>.timer
$ systemctl --user reenable --now <name>.timer

Management

Auflistung der Auslösezeiten:

systemctl list-timers --all

(Sollen nur die aktiven Timer angezeigt werden genügt auch ein systemctl list-timers).

Statusmeldungen:

systemctl status <name>.timer
systemctl status <name>.service

Journaleinträge z.B.:

journalctl -u <name>.service -g Started

Die [Timer] Sektion

( Für die Konfiguration der Sektionen [Unit], [Install] und [Service] sei an dieser Stelle auf die entsprechenden man pages verwiesen)

In der Timer Sektion können auch mehrere Zeitangaben gemacht werden. Sie beeinflussen sich nicht und werden alle zu ihrem jeweiligen Zeitpunkt ausgeführt.


Kalendarische Zeitangaben

  • OnCalendar=

Absolute kalendarische Zeitangaben

OnCalendar=Thu,Fri 2026-*-1..5 11:12:13

(Der service wird jeweils um 11 Uhr 12, zwischen dem 1. und 5. Kalendertag eines jeden Monats des Jahres 2026 ausgelöst, wenn dies Donnerstage oder Freitage sind.)

Die Angabe von Wochentagen erfolgt immer in Englisch und ist optional. Jede Rubrik kann mit "," für die Aufzählung oder mit ".." für von bis versehen werden oder durch "*" für beliebig ersetzt werden.

Die Angaben erfolgen nach diesem Schema:

OnCalendar=Wochentag(englisch/optional) Jahr-Monat-Tag Stunde:Minute:Sekunde

Periodische kalendarische Zeitangaben

OnCalendar=weekly

Auch diese Werte sind möglich.

minutely, hourly, daily, monthly, weekly, yearly, quarterly, semiannually

Entsprechend den oberen Notierung, kann dafür auch diese Schreibweise genutzt werden.

*-*-* *:*:00, *-*-* *:00:00, *-*-* 00:00:00, *-*-01 00:00:00, Mon *-*-* 00:00:00, *-01-01 00:00:00, *-01,04,07,10-01 00:00:00, *-01,07-01 00:00:00

Testen von OnCalendar= Zeitangaben

Kalendarische Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden:

systemd-analyze calendar "<Zeitangabe>"

Mit der Option --iterations <N> werden weitere Auslösezeitpunkte aufgelistet.

Relative Zeitangaben

(Stehen in Relation zu anderen Ereignissen)

Beispiel:

OnBootSec=2d 1h 30m

Einmalige Ereignisse

  • OnBootSec= - Die Zeitspanne seit dem Booten des Rechners.
  • OnStartupSec= - Die Zeitspanne seit dem Start von systemd.
  • OnActiveSec= - Die Zeitspanne seit Aktivierung der Timer-Unit.

Wiederkehrende Ereignisse

  • OnUnitActiveSec= - Die Zeitspanne seit dem der Timer das letzte mal den Job ausgelöst hat.
  • OnUnitInactiveSec= - Die Zeitspanne seit der Beendigung des letzten Jobs.

Folgende Einheiten können für relative Zeitangaben gewählt werden:

usec, us
msec, ms
seconds, second, sec, s
minutes, minute, min, m
hours, hour, hr, h
days, day, d
weeks, week, w
months, month, M (definiert als 30.44 Tage)
years, year, y (definiert als 365.25 Tage)

(Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.)

Testen Relativer Zeitangaben

Relative Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden:

systemd-analyze timespan "<Zeitangabe>"

Weitere Optionen in [Timer]

  • AccuracySec= - Bestimmt die Genauigkeit des Auslösezeitpunkts (default 1 min).
  • RandomizedDelaySec= - Wird verwendet damit nicht mehrere Timer exakt gleichzeitig z.B um 00:00 loslegen.
  • WakeSystem= - Weckt das System aus dem suspend mode.
  • Unit= - Als default ist dieser Wert identisch mit dem Suffix der .timer Datei (s. oben). Bei Verwendung muss eine Datei mit dem hier angegebenen Namen existieren. Eine Verschachtelung von Units ist möglich.
  • Persistent=true - Bewirkt, dass ein versäumter Job beim nächsten Rechnerstart unverzüglich nachgeholt wird.
  • RemainAfterElapse=false - beendet den Timer nach einmaliger Ausführung.

Manpages

systemctl, systemd, systemd-analyze, systemd.directives, systemd.service, systemd.socket, systemd.special, systemd-system.conf, systemd.time, systemd.timer, systemd.unit

Siehe auch