Systemd-servicebestand

Systemd Servicebestand



Op Linux laat de systemctl-statusuitvoer zien dat de service wordt geladen via een bestand dat het servicebestand wordt genoemd. Deze bestanden zijn toegankelijk via de /lib/systemd/system of /etc/systemd/system mappen.

De servicebestanden hebben .dienst extensies en bevatten de instructies die vereist zijn door gesystematiseerd een dienst beheren.







De gesystematiseerd init system beheert de systeeminitialisatie met behulp van de Eenheid . Een eenheid is een object dat een taak of actie uitvoert, zoals het beheren van een dienst, waarbij deze wordt gecontroleerd en bewaakt. Deze eenheden zijn in wezen bestanden die servicebestanden worden genoemd en die eenheidsafhankelijkheden en opdrachten bevatten. Deze bestanden zijn cruciaal voor het efficiënt controleren van de achtergrondprocessen en het beheren van bronnen.



In de gids zal ik het systemd-servicebestand, de structuur ervan en de belangrijkste richtlijnen die de service besturen, verkennen.



Wanneer u met systemd werkt, worden de termen systemd servicebestand En systemd eenheidsbestand worden vaak door elkaar gebruikt omdat ze technisch gezien naar hetzelfde verwijzen.





Wat is Systemd-servicebestand

Op Linux beheert de systemd de services met behulp van de servicebestanden die de configuratie-instructies bevatten, zodat de systemd deze kan begrijpen en uitvoeren.

Om de eenheden weer te geven, gebruik je systemctl met de –lijst-eenheden commando.



systeemctl --lijst-eenheden

Om het servicebestand van een service te lezen, gebruikt u de kat opdracht met het bestandspad.

kat [ / service-bestand-pad ]

Om bijvoorbeeld het servicebestand van ssh.service gebruik het gegeven commando.

kat / libr / gesystematiseerd / systeem / ssh.service

Anatomie van Systemd-servicebestand

Over het algemeen bevatten systemd service unit-bestanden drie secties.

  • Eenheid
  • Dienst
  • Installeren

Een servicespecifiek eenheidsbestand heeft een specifieke sectie met de naam Dienst sectie.

Houd er rekening mee dat de service slechts een type eenheid is. Een eenheid kan verschillende typen hebben, zoals socket, device, mount, automount, swap, target, timer, slice en scope. Deze secties worden tussen de Unit- en Install-secties geplaatst. De bestandsextensie wordt ook vervangen door het betreffende eenheidstype. Een socketeenheidstype heeft bijvoorbeeld een .stopcontact bestandsextensie.

Opmerking: In deze handleiding zal ik me concentreren op het type service-eenheid vanwege het brede gebruik ervan door beheerders en ontwikkelaars.

Deze secties staan ​​tussen vierkante haakjes ([]). Elke sectie bevat een relevante instructieset. Hieronder vindt u een algemene structuur van een servicebestand.

[ Eenheid ]

Richtlijn1 =Instructie 1

Richtlijn2 =Instructie 2

[ Dienst ]

Richtlijn1 =Instructie 1

Richtlijn2 =Instructie 2

[ Installeren ]

Richtlijn1 =Instructie 1

Richtlijn2 =Instructie 2

De volgorde van de secties kan worden gewijzigd; de bovengenoemde volgorde wordt echter over het algemeen gevolgd.

[Eenheid] Sectie

Het eenheidsgedeelte bevat de beschrijving van de eenheid en de eenheidsafhankelijkheden. Deze sectie wordt volgens afspraak bovenaan het servicebestand geplaatst. Veelgebruikte richtlijnen worden hieronder vermeld:

Richtlijn Beschrijving
Beschrijving Deze richtlijn wordt gebruikt om de naam van de dienst te vermelden. De lengte van de beschrijving mag niet langer zijn dan 80 tekens.
Documentatie Deze richtlijn bevat de manpagina of URL van de service.
Vereist Deze richtlijn wordt gebruikt om de afhankelijkheid van de huidige dienst te vermelden. Als de activering van deze afhankelijkheidsservice niet wordt uitgevoerd, wordt de huidige service niet gestart.
Wil Deze richtlijn wordt gebruikt om de afhankelijkheid van de huidige dienst te vermelden. Deze afhankelijkheidsservice hoeft echter niet te worden geactiveerd om de huidige service uit te voeren.
Voor Nadat de huidige eenheid is geactiveerd, wordt de in deze richtlijn genoemde dienst gestart.
Na Voordat de huidige eenheid is geactiveerd, wordt de in deze richtlijn genoemde dienst gestart.
Bindt aan Deze richtlijn koppelt de huidige dienst aan de genoemde dienst. Als de gekoppelde dienst opnieuw opstart, zullen de huidige diensten ook opnieuw opstarten.

Naast deze richtlijnen zijn er nog twee richtlijnen; Voorwaarde En Beweren. Veel services vereisen specifieke systeemvoorwaarden om succesvol te kunnen werken, en deze richtlijnen worden gebruikt om de voorwaarden te vermelden.

Sectie [Installeren].

Deze sectie is niet verplicht en is alleen nodig als een service tijdens het opstarten moet worden geactiveerd of gedeactiveerd. Bovendien is er ook nog de aliasdienst te noemen. Veelgebruikte richtlijnen voor de sectie Installeren worden hieronder vermeld:

Richtlijn Beschrijving
GezochtDoor Deze richtlijn stelt het run-niveau in * doel van de dienst. Als er een doel is ingesteld multi-user.doel dan wordt de service op dit runniveau ingeschakeld.
VereistDoor Deze richtlijn lijkt op WantedBy, maar zelfs zonder de in de richtlijn genoemde afhankelijkheid zal de dienst mogelijk zijn.
Alias Deze richtlijn wordt gebruikt om de service met een andere naam in te schakelen. Er wordt een symlink gemaakt met deze naam wanneer de service wordt ingeschakeld.

Meestal de multi-user.doel wordt gebruikt als GezochtDoor parameter. Maar wat is multi-user.target?

Het multi-user.target vertegenwoordigt de systeemstatus die klaar is om niet-grafische sessies met meerdere gebruikers te accepteren. Het is de status vóór het starten van de GUI.

Er zijn verschillende runniveaus van het systeem. Laten we eens kijken naar de functie van deze runniveaus.

In systemd worden de services gegroepeerd op basis van runniveaus, die worden aangeroepen doelen . Elk runlevel heeft een bestand met .doel uitbreiding in de /etc/systemd/system map. Een service wordt uitgevoerd op basis van de status van het runniveau.

Niveau uitvoeren Doelstellingen Staat Bestanden
0 uitgeschakeld Afsluiten en uitschakelen poweroff.doel
1 redden Start de reddingsschelp redding.doel
2,3,4 meerdere gebruikers Start niet-GUI-shell voor meerdere gebruikers multi-user.doel
5 grafisch Creëert een GUI-shell voor meerdere gebruikers grafisch.doel
6 opnieuw opstarten Afsluiten en opnieuw opstarten reboot.target

Sectie [Service].

Dit gedeelte bevat de configuratie-instellingen voor de service. De primaire configuratie van deze sectie is het definiëren van het type en de opdrachten die moeten worden uitgevoerd aan het begin van de service. Type En ExecStart zijn de belangrijkste richtlijnen die worden gebruikt om een ​​dienst op te zetten.

In de volgende tabel worden verschillende soorten services vermeld.

Dienst Type Beschrijving
eenvoudig Dit is het standaardtype wanneer het type of de busnaam niet wordt vermeld en alleen ExecStart wordt vermeld. Het systeem voert eerst het hoofdproces uit en daarna de vervolgeenheden.
vorken Dit type wordt gebruikt om de service actief te houden, zelfs als de bovenliggende service is gesloten. Het splitst een onderliggend proces op na het sluiten van het bovenliggende proces.
een schot Het systeem voert eerst het hoofdproces uit en wanneer het hoofdproces wordt afgesloten, starten de vervolgeenheden.
dbus De dienst met dbus wordt gebruikt om te communiceren met een ander proces op de bus. Als de busnaam wordt vermeld, wordt het proces geactiveerd nadat de busnaam is verkregen.
op de hoogte stellen De service geeft een melding wanneer het proces wordt gestart. De systemd gaat na het versturen van de melding door naar de vervolgeenheden.
inactief Het houdt de service vast totdat alle actieve taken zijn verzonden; vooral nuttig om de console-uitvoer te verbeteren.

De veelgebruikte richtlijnen in de sectie Service worden hieronder vermeld:

Richtlijn Beschrijving
ExecStart Het behoudt het volledige pad van de uit te voeren opdracht om het proces te starten.
ExecStartPre Het bewaart de opdrachten die moeten worden uitgevoerd voordat het hoofdproces begint.
ExecStartPost Het bewaart de opdrachten die moeten worden uitgevoerd nadat het hoofdproces is gestart.
ExecHerladen Het behoudt de opdracht om de serviceconfiguratie opnieuw te laden.
Herstarten Om de service automatisch opnieuw te starten in omstandigheden zoals bij falen, bij succes, bij abnormaal, bij afgebroken en bij waakhond.
HerstartSec Om het aantal seconden te behouden waarna de service automatisch opnieuw opstart.

De ExecStart is een van de cruciale richtlijnen die worden gebruikt in de sectie Service. Het bevat de volledige pad van het uitvoerbare bestand dat de service wordt uitgevoerd bij het aanroepen.

Conclusie

Een systemd-servicebestand is een configuratiebestand dat is gestructureerd met richtlijnen en opdrachten, zodat deze door systemd kunnen worden beheerd. Deze bestanden bevatten instructies die aangeven hoe een service door systemd wordt beheerd. In deze handleiding heb ik besproken hoe je toegang krijgt tot een systemd-servicebestand, de secties ervan en de richtlijnen die de services beheren. Voor meer informatie over de instructies voor servicebestanden kunt u de officiële documentatiegids lezen hier .