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.
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 <navn>.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 snapshotogsystemctl list-snapshotsfindes 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
