In deze handleiding zal ik bespreken hoe je een gebruikersspecifieke service op Linux kunt maken en hoe je deze kunt beheren met systemctl.
Reden voor het hebben van een normale gebruikersservice
De normale gebruikersservice verschilt van de systeemservice. De normale gebruikersservice is gebruikersgericht. Deze dienst werkt alleen in de sessie van de gebruiker die deze heeft aangemaakt.
Hoe u een normale gebruikersservice kunt maken
De gebruikersspecifieke services op Linux worden in de ~/.config/systemd/user map. Als deze map niet aanwezig is, kan deze worden aangemaakt.
mkdir -P ~ / .config / gesystematiseerd / gebruikerDe -P flag wordt gebruikt om indien nodig een bovenliggende map te maken. De ~ geeft de thuismap van de lokale gebruiker aan en is gelijk aan /home/gebruiker terwijl de punt vóór het configuratiebestand het verborgen maakt. Laten we een eenvoudig bash-scriptbestand maken dat het geheugengebruik elke 30 minuten naar een tekst schrijft. Ik maak het script met de naam van script.sh .
#! /bin/bashterwijl WAAR
Doen
vrij -M >> / thuis / gebruiker / mijnbestand.txt
slaap 1800
klaar
Dit script kan overal worden gemaakt, maar zorg ervoor dat het pad dat in het script is opgegeven een absoluut pad is.
Laten we nu een service maken die het bovenstaande script op de achtergrond uitvoert. Start een teksteditor, zoals Nano of Vim, en plak de onderstaande regels erin.
[ Eenheid ]Beschrijving =Mijn dienst
[ Dienst ]
Type =eenvoudig
ExecStart = / bak / bashen / thuis / gebruiker / script.sh
Herstarten = bij falen
[ Installeren ]
GezochtDoor = standaard.doel
In de sectie [Eenheid] wordt de Beschrijving richtlijn bevat eenvoudigweg de naam van de service. Houd er rekening mee dat het niet meer dan 80 tekens mag bevatten.
De sectie [Service] bevat de drie belangrijke richtlijnen. In de eerste plaats de Type ; dat is eenvoudig , Dan ExecStart met het uitvoerbare bestand van ons aangepaste script. De service wordt pas opnieuw opgestart als er een storing is.
De sectie [Installeren] bevat de GezochtDoor richtlijn dat is standaard.doel , wat impliceert dat de service wordt ingeschakeld in de systeemstatus wanneer deze wordt bereikt op het standaardrunniveau, dat normaal gesproken multi-user.target of graphical.target is.
Sla het bestand nu op in de ~/.config/systemd/user map met elke naam; Ik geef het een naam mijnservice.service .
Hoe u een normale gebruikersservice beheert
Om de normale gebruikersservice te beheren, wordt de opdracht systemctl gebruikt met de -gebruiker vlag. De -gebruiker vlag betekent dat de gebruiker contact opneemt met de servicemanager en niet met het systeem.
Na het aanmaken van het gebruikersspecifieke servicebestand is de eerste cruciale stap het opnieuw laden van de systeemconfiguratiebestanden.
systeemctl --gebruiker daemon-herladenHiermee worden de wijzigingen toegepast.
Om te weten of de service actief is of niet, gebruikt u systemctl, met de -gebruiker vlag en optie.
systeemctl --gebruiker toestand [ servicenaam ]
Andere opdrachten om de normale gebruikersservice te beheren worden hieronder vermeld:
systeemctl --gebruiker begin [ servicenaam ]systeemctl --gebruiker inschakelen [ servicenaam ]
systeemctl --gebruiker stop [ servicenaam ]
systeemctl --gebruiker uitzetten [ servicenaam ]
systeemctl --gebruiker herstarten [ servicenaam ]
Hoe u een normale gebruikersservice kunt maken met systeembeheerdersrechten
Er zijn veel services die een gebruiker maakt, maar hiervoor is beheerderstoestemming vereist. Dergelijke services kunnen worden gemaakt door een Gebruiker richtlijn naar de sectie [Service].
De Gebruiker richtlijn kan worden gebruikt om de naam te vermelden van de gebruiker wiens machtigingen vereist zijn om de service uit te voeren, zoals beheerder . Dus als een normale gebruiker een service wil maken waarvoor beheerdersrechten nodig zijn, voegt u eenvoudigweg de Gebruiker=beheerder in de sectie [Service] zal het werk doen. Deze service blijft echter actief zolang de beheerder actief is. Houd er rekening mee dat deze service niet rechtstreeks door de beheerder kan worden beheerd.
Conclusie
De normale gebruiker kan ook een systemd-service maken, maar deze moet er wel in worden geplaatst ~/.config/systemd/user map. Deze service werkt zolang de gebruiker die deze heeft gemaakt is ingelogd. Deze services worden ook beheerd via de opdracht systemctl, maar dan met -gebruiker vlag. Dit vertelt het systeem dat de service wordt aangeroepen door de gebruiker, niet door het systeem. In deze handleiding heb ik een aangepaste normale gebruikersservice gemaakt en systemctl-opdrachten genoemd om deze te beheren. Bovendien heb ik ook een methode benadrukt om een dienst te creëren waarvoor beheerdersrechten vereist zijn.