====== Systemd på openSUSE Linux – Komplet Guide ======
//Baséret på videoen "The Linux Lighthouse" – en guide til systemd på openSUSE Linux, fra grundlæggende kommandoer til avanceret tilpasning.//\\
[[https://blog.smarken.dk/2026/10/systemd-pa-opensuse-linux-komplet-guide | https://blog.smarken.dk/2026/10/systemd-pa-opensuse-linux-komplet-guide]]
**Se også:**\\
[[https://www.freedesktop.org/wiki/Software/systemd/ | https://www.freedesktop.org/wiki/Software/systemd/]]\\
ny site --> [[https://systemd.io/ | https://systemd.io/]]
----
===== Hvad er systemd? =====
Systemd er Linux' system- og service-manager, som initialiserer og administrerer systemprocesser, efter kernen er indlæst. Den erstatter det gamle SysV-init-system. Systemd er kendt for paralleliseret opstart og on-demand-aktivering af dæmoner, hvilket gør den hurtigere og mere effektiv.
**Systemd's vigtigste funktioner:**
* Paralleliseret opstart af tjenester
* Socket- og D-Bus-aktivering for on-demand-tjenester
* cgroup-baseret proces-sporing
* Oprettelse af snapshots og systemgendannelse
* Fleksibel afhængighedsstyring
===== Tjenestestyring med systemctl =====
Det primære værktøj til at administrere systemd er ''systemctl''. Her er de grundlæggende kommandoer, du får brug for hele tiden (eksemplerne bruger ''sshd'' – SSH-tjenesten til sikker fjernlogin).
==== Oversigt over aktive enheder ====
systemctl list-units
Viser alle aktuelt aktive enheder med deres status og beskrivelser.
==== Start og stop af en tjeneste ====
# Start en tjeneste
sudo systemctl start sshd
# Stop en tjeneste
sudo systemctl stop sshd
==== Tjek status ====
systemctl status sshd
Giver detaljeret information om tjenestens aktuelle tilstand, inklusive fejl.
==== Genstart og genindlæs ====
# Genstart en tjeneste
sudo systemctl restart sshd
# Genindlæs konfiguration uden afbrydelse
sudo systemctl reload sshd
==== Start automatisk ved boot (enable/disable) ====
# Start automatisk ved boot
sudo systemctl enable sshd
# Undgå start ved boot
sudo systemctl disable sshd
# Tjek om tjenesten er enabled
systemctl is-enabled sshd
===== Targets =====
I systemd erstatter **targets** det gamle runlevel-koncept med mere fleksible opstartssekvenser.
^ Target ^ Beskrivelse ^ Runlevel-ækvivalent ^
| ''graphical.target'' | Multi-user med netværk og grafisk interface | Runlevel 5 |
| ''multi-user.target'' | Multi-user med netværk | Runlevel 3 |
| ''rescue.target'' | Enkeltbrugertilstand til systemgendannelse | – |
==== Vis og sæt default target ====
# Vis nuværende default target
systemctl get-default
# Sæt nyt default target (kræver sudo)
sudo systemctl set-default graphical.target # eller multi-user.target / rescue.target
Efter en reboot starter systemet i det target, du lige har sat.
==== Skift target med det samme ====
sudo systemctl isolate multi-user.target
Skifter straks systemet til det valgte target (f.eks. ''multi-user'' eller ''rescue'').
===== Enheder (units) og egne unit-filer =====
Systemd-enheder defineres af unit-filer, som ligger i:
* ''/usr/lib/systemd/system'' – standard-enheder
* ''/etc/systemd/system'' – egne/tilpassede konfigurationer
**Sådan opretter du en tilpasset unit-fil** (eksempel med ''sshd.service''):
# 1. Kopiér en standard-unit-fil til /etc/systemd/system
sudo cp /usr/lib/systemd/system/sshd.service /etc/systemd/system
# 2. Redigér filen efter behov
# 3. Genindlæs systemd
sudo systemctl daemon-reload
# 4. Start/enable din tilpassede tjeneste
sudo systemctl start sshd
===== Oversigt og fejlfinding =====
==== Vis alle indlæste unit-filer ====
systemctl list-unit-files --type=service
==== Vis kun feilede tjenester ====
systemctl --failed
==== Analysér opstartstider ====
# Tjenester sorteret efter opstartstid
systemd-analyze blame
# Grafisk rapport som PNG
systemd-analyze plot > startup.png
''blame'' viser tjenester sorteret efter opstartstid; ''plot'' genererer et PNG-diagram med en visuel opdeling af opstartstiderne.
===== Snapshots – et forbehold =====
Den officielle openSUSE-reference- og administrationsguide beskriver **systemd-snapshots**: ''sudo systemctl snapshot .snapshot'', som gemmer systemets aktuelle tilstand og muliggør nem gendannelse (oprettelse, sletning, liste og isolate).
> **Bemærk:** Denne funktionalitet virker ikke i praksis. ''systemctl snapshot'' og ''systemctl list-snapshots'' findes ikke længere – sandsynligvis er funktionen fjernet fra systemd til fordel for **Snapper**. Funksjonen er dog stadig omtalt i den officielle manual. Videens skaber efterlyser information, hvis nogen kender nærmere detaljer.
===== Timer-units (jobscheduling) =====
Systemd-timer-units bruges til jobplanlægning ligesom cron, men med flere fordele:
* Jobs kan afhænge af andre systemd-tjenester
* Timers håndteres som almindelige systemd-tjenester via ''systemctl''
* Timers kan være **real-time** (kalenderbaserede) eller **monotonic** (relative)
* Timers logges i systemd-journalen, hvilket gør overvågning og fejlfinding lettere
==== Opret en service-fil ====
Opret filen ''/etc/systemd/system/mytask.service'' (navnet skal slutte på ''.service''):
[Unit]
Description=My scheduled task
[Service]
ExecStart=/usr/local/bin/mytask.sh
==== Opret en timer-fil ====
Opret filen ''/etc/systemd/system/mytask.timer'':
[Unit]
Description=Run my task every hour
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
==== Aktivér og start timeren ====
sudo systemctl enable mytask.timer
sudo systemctl start mytask.timer
# Tjek at timeren er aktiv
systemctl list-timers
> **Tip:** Hvis timeren fejler med "bad unit file setting", så tjek statussen med ''systemctl status mytask.timer'' – ofte er det en tastefejl i unit-filen (f.eks. en forkert nøgle).
===== Temp-files (tmpfiles.d) =====
Systemd understøtter regelmæssig oprydning i midlertidige mapper via **tmpfiles.d**, som læser sin konfiguration fra (i prioriteret rækkefølge):
- ''/etc/tmpfiles.d'' – egne indstillinger (overtrumfer de andre)
- ''/run/tmpfiles.d''
- ''/usr/lib/tmpfiles.d'' – pakkenes standardkonfiguration
Konfigurationsformatet er én linje pr. post: ''type'', ''path'', ''action'' samt evt. ''mode'', ''ownership'', ''age'' og ''argument''-felter.
==== Eksempel: automatisk oprydning i /tmp ====
Opret filen ''/etc/tmpfiles.d/cleanup.conf'':
sudo vi /etc/tmpfiles.d/cleanup.conf
Med følgende indhold (sletter filer ældre end 10 dage i ''/tmp''):
d /tmp 1777 root root 10d
Tjek derefter timeren, der håndterer oprydningen:
systemctl status systemd-tmpfiles-clean.timer
> **Tip:** Der findes mange parameterkombinationer til forskellige use cases – læs manualen (''man tmpfiles.d'') for en fuld forklaring.
===== Logstyring med journalctl =====
''journalctl'' giver adgang til at forespørge logbeskeder:
# Vis alle logs for en bestemt tjeneste
sudo journalctl -u sshd
# Følg logs i real time
sudo journalctl -u sshd -f
# Begræns antal viste linjer
sudo journalctl -n 50
''-f'' er praktisk til realtids-overvågning (f.eks. mens du logger ind via SSH på en anden maskine) – afslut med ''Ctrl+C''.
===== Opsummering =====
Denne guide har dækket:
* Grundlæggende ''systemctl''-kommandoer (start, stop, status, genstart, genindlæs, enable/disable)
* Targets og hvordan du skifter mellem dem
* Oprettelse af egne unit-filer
* Fejlfinding og opstartsanalyse (''--failed'', ''systemd-analyze'')
* Timer-units som cron-alternativ
* Oprydning af midlertidige filer med tmpfiles.d
* Loganalyse med ''journalctl''