Systemd bringer konceptet med systemd-enheder i Linux. For e.g., serviceenhed, målenhed, monteringsenhed osv. er enhedstyper med filtypenavn som .service, .mål, .monter hhv. Konfigurationsfilen, der repræsenterer disse enheder, er gemt inde i telefonbøgerne: / usr / lib / systemd / system /, / run / systemd / system /, / etc / systemd / system /
Tidligere versioner af Red Hat Enterprise Linux (RHEL) brugte init-scripts. Disse scripts blev skrevet i BASH og var placeret i kataloget “/ etc / rc.d / init.d / ”. Dette er scripts, der bruges til at kontrollere tjenesterne og dæmoner. Senere i RHEL 7 blev serviceenheder introduceret til at erstatte init-scripts. Fedora, som er et upstream-operativsystem for Red Hat Enterprise Linux, er begyndt at bruge systemd fra Fedora version 15.
Serviceenheder har .servicefiludvidelser og har lignende roller som init-scripts. “Systemd” bruger “systemctl” -værktøjet til at styre systemtjenester. Det kan bruges til at se, starte, stoppe, genstarte, aktivere eller deaktivere disse tjenester.
Fordele ved Systemd i forhold til Init System
- Med systemd kan vi prioritere nødvendige tjenester frem for mindre vigtige tjenester.
- Cgroups bruges af systemd til at holde styr på processer og kontrollere udførelsen.miljø.
- Systemd understøtter stadig den gamle init-proces og har mere kontrol.
- Systemd er i stand til at håndtere ændringer af dynamiske systemkonfigurationer.
Hvad vil vi dække?
I denne vejledning lærer vi om styring af systemd-processer. Vi vil se, hvordan du aktiverer og deaktiver opstartstjenester ved opstart, og hvordan du udfører servicefunktioner som start, stop, genstart osv. Vi har udført nedenstående øvelser på Fedora 30-arbejdsstationer, som vil være mest anvendelige til andre Linux-operativsystemer.
Liste over opstartstjenester ved opstart i Fedora Linux
Den gamle SysV-metode bruger tjenesten og chkconfig kommandoer til at administrere tjenesterne. Disse kommandoer erstattes nu med systemd-kommandoer som systemctl. Lad os se nogle af funktionerne i "systemctl" på forskellige tjenester i Linux.
1. For at liste alle de tjenester, der kører på dit system sammen med deres tilstande (aktiveret eller deaktiveret), skal du bruge kommandoen nedenfor:
$ sudo systemctl liste-enhed-filer - type = service
En tjeneste kan have tre tilstande: 1) aktiveret 2) deaktiveret 3) statisk
En aktiveret tjeneste har et symlink i en .ønsker katalog, mens en deaktiveret tjeneste ikke har en. En statisk tjeneste har ikke et installationsafsnit i det tilsvarende init-script. Så det kan ikke aktiveres eller deaktiveres.
For at få flere detaljer om tjenesterne skal nedenstående kommando bruges.
$ sudo systemctl -tjeneste
Resume af ovenstående kolonnenavne:
ENHED - systemd enhedsnavn (her et servicenavn).
LOAD - Angiv, om systemd-enheden var indlæst korrekt eller ikke.
AKTIV - Enhedens tilstand (her service).
SUB - En deltilstand for en enhedsaktivering.
BESKRIVELSE - En kort info om enheden.
Vi kan også bruge følgende kommando:
$ sudo ls / lib / systemd / system / *.serviceeller
$ sudo / etc / systemd / system / *.service
Det “/ Etc / inittab” erstattes nu af “/ Etc / systemd / system /” i systemd. Denne mappe indeholder nu symlinks til filerne i kataloget “/ Usr / lib / systemd / system”. Init-scripts placeres i “/ usr / lib / systemd / system”. En tjeneste skal kortlægges til “/ Etc / systemd / system /” for at starte det ved systemstart. Til dette formål bruges systemctl-kommandoen i Fedora og andre nyeste Linux-systemer.
2. Lad os se nedenstående eksempel på aktivering af httpd-tjenesten:
$ sudo systemctl aktiver httpd.service
Vi kan også bruge kommandoen nedenfor til at filtrere alle de aktiverede tjenester:
$ sudo systemctl liste-enhed-filer | grep aktiveret
eller brug kommandoen:
$ sudo systemctl | grep kører
3. For at liste alle de aktive (kørende) tjenester skal du bruge kommandoen:
4. For at se hvilke tjenester der er aktiveret til at starte automatisk ved systemstart, kan vi også bruge følgende kommando:
$ sudo systemctl liste-enhedsfiler --type = service --stat = aktiveret - alt
5. På samme måde kan vi kontrollere de deaktiverede tjenester for at starte ved opstart med kommandoen:
$ sudo systemctl liste-enhed-filer --type = service --stat = deaktiveret - alt
6. Vi kan også se, hvilken tid hver tjeneste tager ved opstart:
$ sudo systemd-analyser skylden
7. For at kontrollere, om en tjeneste er aktiveret til autostart ved opstart, skal du bruge kommandoen:
$ sudo systemctl er aktiveret xxxSæt navnet på tjenesten i stedet for xxx. E.g., i tilfælde af httpd-tjeneste vil kommandoen være:
$ sudo systemctl er aktiveret httpd.serviceeller
$ sudo systemctl er aktiveret httpd
8. For at kontrollere status for en tjeneste skal du bruge kommandoen:
$ sudo systemctl status xxx.serviceFor eksempel for at kontrollere status for sshd-tjenesten:
$ sudo systemctl status sshd.service
9. For at kontrollere, om en tjeneste kører eller ej, skal du bare køre nedenstående kommando:
$ sudo systemctl er-aktiv xxx.serviceFor eksempel for at kontrollere telnetstatus:
$ sudo systemctl er aktivt telnet.service
10. For at starte en død eller inaktiv tjeneste skal du bruge kommandoen:
$ sudo systemctl start xxx.serviceFor eksempel for at starte en sshd-tjeneste:
$ sudo systemctl start sshd
11. Sådan deaktiveres en tjeneste ved systemstart
For eksempel for at deaktivere httpd-tjenesten:
$ sudo systemctl deaktiver httpd.serviceeller
$ sudo systemctl deaktiver httpd
12. For at genstarte en kørende tjeneste
$ sudo systemctl genstart xxx.serviceFor at genstarte sshd-tjenesten skal du bruge kommandoen:
$ sudo systemctl genstart sshdHvis tjenesten ikke allerede kører, startes den.
13. Sådan genindlæses en kørende tjeneste
$ sudo systemctl genindlæs xxx.serviceGenindlæs f.eks. Httpd-tjenesten med:
$ sudo systemctl genindlæs httpd.service
Denne kommando genindlæser konfigurationen af en bestemt tjeneste. For at genindlæse enhedskonfigurationsfilen til systemd har vi brug for kommandoen:
$ sudo systemctl dæmon-genindlæsning14. Sådan viser du alle afhængigheder af en tjeneste:
$ sudo systemctl listeafhængighed xxx.serviceI tilfælde af httpd-tjeneste vil kommandoen være:
$ sudo systemctl listeafhængighed httpd.service
Konklusion
I denne vejledning har vi set forskellige måder at administrere tjenester med systemd-værktøj som at aktivere tjenester ved opstartstid, starte og stoppe dem osv. Hvis du var vant til servicekommandoen for gamle Sysvinit, skal du skifte til systemd, da den har flere funktioner, og det er standardinit-systemet i nyere versioner af Fedora, RHEL og de fleste af de andre større Linux-distributioner.