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 .