====== 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''