Hoe u een servicebestand maakt in Linux

Hoe U Een Servicebestand Maakt In Linux



Het systemd init-systeem maakt nu deel uit van bijna alle Linux-distributies. Als beheerder of ontwikkelaar creëer je diensten die systemd kan beheren. Als u bijvoorbeeld services wilt starten tijdens het opstarten of deze handmatig wilt beheren, kunt u dit doen via een aangepast servicebestand.

In deze tutorial zal ik bespreken hoe je een systemd-servicebestand op Linux maakt.







Wat is een servicebestand

Voordat we verder gaan, moeten we eerst begrijpen wat een systemd-servicebestand is en hoe het op Linux wordt gemaakt.



Een systemd-servicebestand bevat instructies voor systemd om de service te beheren. Het bevat doorgaans drie secties:



  • Eenheid
  • Dienst
  • Installeren

De Eenheid sectie bevat basisinformatie over de service, zoals een korte beschrijving, documentatiepagina's en een pad naar afhankelijkheden. De Installeren sectie is optioneel, maar bepaalt doorgaans in welke systeemstatus de service moet worden ingeschakeld.





De Dienst sectie bevindt zich normaal gesproken ingeklemd tussen de unit- en installatiesectie. Het bevat voornamelijk het type service en het pad van de uitvoerbare bestanden die in wezen opdrachten zijn die moeten worden uitgevoerd bij het aanroepen van de service door systemd.

Hier ziet u hoe een typische servicebestandsstructuur eruit ziet.



[ Eenheid ]

Richtlijn1 =instructie

Richtlijn2 =instructie



[ Dienst ]

Richtlijn1 =instructie

Richtlijn2 =instructie



[ Installeren ]

Richtlijn1 =instructie

Richtlijn2 =instructie

Hier zijn richtlijnen parameters die hun respectieve invoer ontvangen. Bijvoorbeeld de Beschrijving richtlijn neemt een reeks van de naam van de service. Op een vergelijkbare manier, ExecStart houdt rekening met het volledige pad van het uitvoerbare bestand.

Een typisch servicebestand van ssh.service vindt u hieronder.

Een servicebestand maken

Om een ​​systemd-service te creëren, is het noodzakelijk om de belangrijkste richtlijnen te begrijpen. In deze handleiding bespreek ik de essentiële richtlijnen die u kunnen helpen bij het maken van een volledig functioneel servicebestand.

Het maken van een servicebestand omvat meerdere stappen. Laten we beginnen met het maken van het scriptbestand.

Opmerking: Om door te gaan met de onderstaande methode, moet u over rootrechten beschikken.

1. Een script maken

De eerste stap omvat het maken van de code die wordt uitgevoerd wanneer de service begint te werken. Voor deze tutorial maak ik een bash-script dat de uptime van het Linux-systeem en het geheugengebruik opslaat.

Laten we een script maken in de huidige map met de naam van mijnscript.sh met behulp van een nano-editor.

sudo nano mijnscript.sh

Voeg nu het onderstaande script toe aan het bestand en sla het op door op te drukken ctrl+x en dan En .

#!/bin/bash

echo '>>Hier is de uptime van uw systeem<<' > thuis / zichzelf / mijnbestand.txt

uptime >> thuis / zichzelf / mijnbestand.txt

echo '>>Hier is het geheugengebruik van uw systeem<<' >> / thuis / zichzelf / mijnbestand.txt

vrij -M >> thuis / zichzelf / mijnbestand.txt

slaap 60

Het script bevat een aantal echoreeksen en uptime En vrij opdrachten.

De uptime opdracht op Linux wordt gebruikt om af te drukken hoe lang een systeem actief is en hoeveel gebruikers verbonden zijn met een gemiddelde systeembelasting van de afgelopen 1, 5 en 15 minuten.

De vrij opdracht wordt gebruikt om het geheugengebruik van het systeem af te drukken, terwijl de -M flag wordt gebruikt om de uitvoer af te drukken MB's .

Om informatie in een tekstbestand op te slaan, gebruiken we speciale operators, de zogenaamde omleidingsoperatoren. De > operator wordt gebruikt om tekst in het genoemde tekstbestand in te voegen. Als het bestand echter nog niet bestaat, wordt het aangemaakt. Terwijl de >> operator wordt gebruikt om de tekst aan het bestand toe te voegen. De slaap commando wordt gebruikt om de activiteit van de service gedurende minimaal één minuut te behouden.

Maak het script nu uitvoerbaar door de benodigde machtigingen te verlenen.

sudo chmod +x mijnscript.sh

Script heeft nu de uitvoeringsrechten, laten we doorgaan naar de volgende sectie.

Opmerking: Om het servicebestand foutloos te maken, gebruikt u het absolute pad van het bestand in het bash-script.

2. Een .service-bestand maken

Maak vervolgens een servicebestand met de .dienst verlenging. Het servicebestand moet worden aangemaakt in de /etc/systemd/system map. Navigeer eerst naar deze map met behulp van de CD commando.

CD / enz / gesystematiseerd / systeem

U kunt het servicebestand in elke map maken en dat bestand later toch naar deze map verplaatsen.

Ik maak een servicebestand met mijnservice.service naam.

sudo nano mijnservice.service

Voeg nu de volgende regels toe aan het bestand.

[ Eenheid ]

Beschrijving =Mijn dienst

[ Dienst ]

Type =eenvoudig

ExecStart = / bak / bashen / thuis / zichzelf / script.sh

Herstarten = bij falen

[ Installeren ]

GezochtDoor =multi-user.target

Let daar op [Eenheid], [Service], En [Installeren] Zijn hoofdlettergevoelig . Het servicebestand werkt niet als een van deze onjuist wordt vermeld, zoals [UNIT] of [SERVICE].

De servicenaam is opgegeven als Mijn dienst in de Beschrijving richtlijn van de [Eenheid] sectie.

De Type van de dienst is eenvoudig in de [Dienst] sectie, wat het standaardtype is. Vorken , een schot , op de hoogte stellen , dbus en inactief zijn enkele van de andere typen.

Als u de dienst gebruikersspecifiek wilt maken, dan kunt u de Gebruiker richtlijn kan ook worden gebruikt met de gebruikersnaam van de gebruiker. Als u deze richtlijn gebruikt, wordt de gebruikersmachtiging van de service afhankelijk.

Terwijl de ExecStart richtlijn bevat het volledige pad van het uitvoerbare bestand. In het bovenstaande voorbeeld is het scriptbestand mijnscript.sh wordt opgeslagen in de /home/sam/ map. Deze richtlijn regelt in feite wat er moet worden uitgevoerd wanneer een service wordt aangeroepen door systemd. Als het volledige pad van de opdracht niet is opgegeven, wordt dit automatisch opgelost om absolute paden zoals /usr/lokaal/bin , /usr/bin/, En /bak . Het is prima om de naam van het uitvoerbare bestand te gebruiken, zolang deze zich in de standaardopdrachtmappen bevindt, maar vermeld anders het absolute pad. Houd er rekening mee dat er ook meerdere opdrachten kunnen worden gebruikt, gescheiden door een puntkomma (;).

De [Installeren] sectie is optioneel; het geeft echter aan hoe de service is ingeschakeld. De GezochtDoor richtlijn neemt de doelbestanden op runniveau als parameters. Verschillende doelbestanden gaven verschillende run-levels van het systeem aan, zoals uitgeschakeld , redden , meerdere gebruikers , grafisch , En opnieuw opstarten .

De multi-user.doel betekent dat de service wordt ingeschakeld wanneer het systeem zich in een staat bevindt waarin niet-grafische sessies met meerdere gebruikers mogelijk zijn.

3. Activeren van de Dienst

Om de service te activeren, laadt u eerst de systemd-configuraties opnieuw met behulp van systeemctl nutsvoorziening.

sudo systemctl daemon-herladen

Activeer vervolgens de service opnieuw met behulp van systeemctl commando met inschakelen .

sudo systeemctl inschakelen mijnservice.service

Om dit te verifiëren, controleert u de status van de service met behulp van de systemctl-status commando.

De service draait succesvol.

Laten we nu het tekstbestand lezen mijnbestand.txt de dienst die is gemaakt in de /thuis map.

Een Systemd-servicebestand maken voor een normale gebruiker

De procedure voor het maken van een servicebestand voor een normale gebruiker is vergelijkbaar met de methode voor het maken van een servicebestand door de beheerder. De map waarin het servicebestand voor normale gebruikers moet worden opgeslagen, is echter anders. Normale gebruikers moeten hun servicebestanden in het ~/.config/systemd/user . Deze map moet worden aangemaakt met behulp van de mkdir commando.

mkdir ~ / .config / gesystematiseerd / gebruiker

Om de dienst te activeren door een normale gebruiker -gebruiker commando wordt ingevoegd met systeemctl in plaats van sudo .

systeemctl --gebruiker daemon-herladen

systeemctl --gebruiker inschakelen SERVICENAAM.service

systeemctl --gebruiker status SERVICENAAM.service

De -gebruiker optie wordt gebruikt om de systemd servicebestanden van de gebruiker te beheren.

Hoe een servicebestand te verwijderen

Om het servicebestand te verwijderen, moet eerst de service worden gestopt.

sudo systemctl stop SERVICE-NAAM.service

Controleer de status met systemctl-status commando om te weten of de service is gestopt of niet. Verwijder vervolgens het servicebestand met behulp van de rm commando.

sudo rm / enz / gesystematiseerd / systeem / SERVICENAAM.service

Laad nu de gesystematiseerd configuratie.

sudo systemctl daemon-herladen

Conclusie

De aangepaste systemd-service is voordelig in verschillende scenario's. In deze handleiding hebben we geleerd hoe u een aangepast systemd-servicebestand voor een systeembeheerder kunt maken en hoe normale gebruikers een servicebestand kunnen maken. Verder zien we ook de procedure voor het verwijderen van het servicebestand.