SystemD - Hvordan det starter systemet ditt

SystemD - Hvordan det starter systemet ditt
SystemD ble utviklet da utviklere fant ut at det ikke var mulig å starte systemet. De eldre systemene går gjennom oppstartsfilene for systemet en etter en. Dette kan føre til at bagasjerommet stopper når du venter på ressurser som går sakte. Et eksempel på dette er når en prosess må ha nettverket i gang. Å bruke nettverket er veldig tregt, andre ressurser trenger ikke å vente. Dette problemet kan reduseres på andre måter, men med SystemD gjøres all oppstart parallelt der det er mulig. Resultatet skal være en mye raskere oppstart for komplekse systemer, som inkluderer skrivebordssystemet ditt.

Systemd: Far til alle andre prosesser

En Linux, og alle andre *Nix, starter alltid en prosess som er faren til alle andre prosesser. Når du bruker SystemD, er den prosessen SystemD, prosessen kalles alltid 'init' uavhengig av init -system. Når SystemD kjører, vil den starte demonene som kjører delsystemene. Daemonene kontrollerer hvilke ressurser du har og hvilke systemer som er åpne. Innloggingshelten din er en tjeneste som administreres av SystemD. SystemD starter mange andre tjenester, og det monterer også alle diskene dine, inkludert snapmonteringer.

Hvordan kontrollerer du hva som starter?

Først av alt hadde det tidligste init -systemet RunLevels som mange lesere vil kjenne igjen. RunLevel 1 var enkeltbrukermodus, 2 Multi-User Mode uten nettverk og 3-5 Multi-User and Graphical. Det betydde stoppet og 6 betydde omstart om å stille opp og 6 betydde omstart. Utviklere av SystemD fant at disse nivåene var uklare, så endret det å bli kalt mål. Mål er ikke akkurat de samme, men har en lignende funksjon. Når et spesifikt mål kjører, kjører en bestemt samling av enheter. Mer om enheter senere.

Sette "runlevel", kalt et mål.

Du kan endre målet mens du kjører, for eksempel kan du bruke en terminal for å stille målet ditt til multi-user. Dette vil stoppe GUI, X eller Wayland, men la deg og andre logge inn med en tekstkonsoll. Bruk følgende kommando.

$ SystemCTL Isolat Multuser.mål

Eller, hvis du vil starte skrivebordet, bruk følgende kommando i stedet.

$ SystemCTL Isolat grafisk.mål

Det du virkelig er interessert i er hvordan du starter riktig nivå, kan du finne ut hva du har akkurat nå på denne måten.

$ SystemCTL Get-Default

For å endre standard sett den.

$ SystemCTL set-default grafisk.mål

Denne kommandoen gjør at mange enheter og tjenester starter når du starter datamaskinen. Det kan være lurt å starte eller stoppe en enkelt tjeneste skjønt.

Starter, stopper, aktiverer og deaktiverer en tjeneste.

Det er her du har en sjanse til å endre det som skjer ved oppstart og under normal drift. I motsetning til målene, er enhetene spesielle for en bestemt tjeneste. For å stoppe en tjeneste bruker du 'SystemCTL Stop', likt du kan bruke 'Start' og 'Restart' på nytt '. For å gjøre en tjeneste start på oppstart bruker du 'Aktiver', for å stoppe den 'Deaktiver'. Velg en tjeneste og start og stopp den mens den kjører.

$ SystemCTL status kopper.service

Denne kommandoen viser statusen til tjenesten, den viser også en liste over handlinger tatt av systemet angående tjenesten. For å stoppe tjenesten, bruk kommandoen nedenfor.

$ SystemCTL stopp kopper.service

Tjenesten stoppes nå for din nåværende økt. For å endre den til ikke å starte ved neste oppstartsbruk deaktiverer.

$ SystemCTL deaktiver kopper.service

Legg merke til at du bare kunne deaktivere tjenesten, dette ville ikke ha noen innvirkning på din nåværende situasjon. Tjenesten fortsetter bare. Ved neste støvel vil den ikke starte tjenesten.

SystemD kontrollerer også monteringer, enheter, stikkontakter og mer. Enhetene er lavere og lettere å forstå, hvis du har behandlet en Linux før. Du kan også angi disse selv, men mest effekt på oppstart er å kontrollere tjenester.

Hvordan legger du til dine egne skript?

Du kan legge til dine egne skript ganske enkelt, detaljene som er interessante å vite er hvordan du lager skriptet eller tjenesten din til å avhenge av andre. Dette demonstreres pent i denne WiFi-Resume Service-filen.

[Enhet]
Beskrivelse = Restart NetworkManager på CV
Etter = suspendere.mål
Etter = dvale.mål
Etter = hybrid-søvn.mål
[Service]
Type = Oneshot
ExecStart =/bin/SystemCTL Restart Network-Manager.service
[Installere]
WantedBy = Suspend.mål
WantedBy = Hibernate.mål
WantedBy = Hybrid-Sleep.mål

Denne koden oppretter en tjeneste som skjer en gang (OneShot) etter de tre målene som er nevnt i koden. Koden som utføres er i dette tilfellet en enkelt kommando. Du kan like godt punktutfør til et manus du velger.

Konklusjon

Endre systemet ditt, spesielt hvordan det starter, kan du gjøre selv, men pass på at dette har mange konsekvenser for hver tjeneste, så sørg for at koden din er stabil og rask til å utføre.