Hvordan du lister opp tjeneste med systemd

Hvordan du lister opp tjeneste med systemd
Denne artikkelen kan være en kommando kort, men den resulterende utskriften er veldig lang.

Dump -kommandoen

Hvis noen ber deg om å vise hele konfigurasjonen av systemet ditt, bruk dump -kommandoen.

$ SystemD--dump-konfigurasjons-artikler

Filen dekker alle enheter du har på systemet. Når en utvikler har denne filen tilgjengelig, vil personen gå gjennom det du har og prøve å finne problemene du står overfor. Over og ferdig. Du ville imidlertid ikke lest denne artikkelen hvis du skulle la noen andre gjøre alt. La oss se hva du kan gjøre med en tjeneste om gangen og lære noen triks for å filtrere resultatene dine.

Hierarkiet av systemd

For å bli effektiv må du innse at du i Systemd har hierarki, og du kan stille hver tjeneste til å avhenge og/eller vente på andre tjenester. De forskjellige måtene du gjør dette på er tydelig i tjenestefilene. De forskjellige uttalelsene du har er 'ønsker', 'kreves', 'før' og 'etter'. For effektiv analyse kan du bruke disse for å se om enheten din er nede på grunn av avhengige. Du kan deretter spore tilbake til der det underliggende problemet ligger. Her er et eksempel på dette.

$ SystemCTL-listeavhengigheter-før XPRA.service

Utskriften viser de andre enhetene som XPRA.Tjenesten er avhengige av. I dette tilfellet er de andre enhetene aktive, så vi trenger å fokusere på hvorfor enheten er ødelagt. Eksemplet manglet en sertifikatfil.

Den viktigste bruken av dette er å undersøke om tjenesten din mangler avhengigheter, bruk kommandoen på denne måten.

$ SystemCTL List-Dependencies Xringd

Resultatet er en lang liste, praktisk organisert i et tre og viser alle tjenester som grønt eller rødt hvis noe er galt. Du kan også se avhengighetene i tjenestefilen. Åpne filen ved hjelp av din favorittredigerer eller bruk SystemCTL, som åpner filen med standardredigereren.

Liste opp aktive tjenester

Når du vil undersøke et system, må du vite hvordan enhetene passer sammen. For å gjøre dette har du en rekke alternativer for å skrive ut detaljene. Du kan liste opp hvilke systemer som er opptatt, mislyktes og så videre. Enda viktigere kan du liste opp hvordan de blir satt sammen, hvilken enhet, tjeneste osv. Den nåværende enheten avhenger av. Hovedkommandoen for å gjøre dette er SystemCTL, alternativene er nyttige å begrense på ditt spesifikke problem.

For å få riktig bruk av SystemCTL, se nøye på alternativene for kommandoen. Det er alternativer å velge nøyaktig hva du trenger, spesielt når det gjelder tilstanden til tjenester. Her leter vi etter tjenester som har problemer.

$ SystemCTL List-Unit-Files-Type = Service

Denne listen er også lang, og du må bla gjennom alle tjenestene for å finne det du leter etter. Med noen flere parametere kan du filtrere for en bestemt eller de som er deaktivert. Kommandoen nedenfor finner alle enheter som er maskert.

$ SystemCTL List-Unit-Files-Type = Service-State = Maskered

Maskerte tjenester er blokkert slik at andre tjenester ikke kan starte dem, selv om den andre tjenesten trenger dem. Dette kan brukes til å sikre at du ikke har motstridende tjenester som kjører. Vanligvis blir mange tjenester maskert av pakkebehandleren din når du fjerner pakken. Du kan fjerne servicefilen helt hvis du ønsker etter å ha fjernet en tjeneste. Det er også mulig at det ødelegger mange tjenester som du vil ha, så sørg for at du vet om du trenger maskerte tjenester.

Noen tjenester blir maskert av prosesser, og du har ikke alltid tenkt at tjenesten skal maskeres. Når dette har skjedd med systemet ditt, er den første handlingen å ta å avmaske ved hjelp av SystemCTL. Dette er imidlertid ikke alltid mulig, så du må ta bort lenken i riktig katalog. I de fleste systemer vil dette være lib/systemd/system. Før du gjør det, sjekk at filen faktisk er en lenke til /dev /null.

$ ls -l lib/systemd/system> | grep null

Når du er sikker på at du vil fjerne denne lenken, må du fjerne den med RM eller Unlink.

$ RM/LIB/SYSTEMD/SYSTEM/UDISKS2.service

Nå som du vet hvordan du gjør det, hør denne advarselen: Mange ganger er det nødvendig å ha denne lenken der inne. Ta LVM2 som eksempel, det maskeres fra drift, så det ikke vil forstyrre det nye systemet, der LVM2 kommer like mange små tjenester. Se resultatet av:

$ SystemCTL Status LVM2*

Å fjerne lenken kan forårsake ødeleggelser på systemet ditt fordi LVM2 i seg selv trenger det for å unngå konflikter. Dette er bare et eksempel, så pass på før du går videre.

Konklusjon

Når du vil liste tjenester i SystemD, må du først reflektere over hva du leter etter i din søken. Leter du etter en tjeneste du trenger, eller ser du at du har for mange tjenester. Uansett må du tilpasse spørringen til dine spesielle behov. SystemD ser forvirrende ut med det første, men når du ser nærmere på, bruker det hele en enkel måte å forene oppstarten slik at tjenestene kan starte parallelt der systemet trenger det, samtidig som det kan få hver tjeneste vente på den spesifikke tjenesten de er avhengige av.