I denne guide vil jeg dække, hvordan man opretter en brugerspecifik tjeneste på Linux, og hvordan man administrerer den ved hjælp af systemctl.
Grund til at have en normal brugerservice
Den normale brugertjeneste er forskellig fra systemtjenesten. Den normale brugerservice er logget ind brugercentreret. Denne tjeneste vil kun fungere i sessionen for den bruger, der oprettede den.
Sådan opretter du en normal brugerservice
De brugerspecifikke tjenester på Linux er placeret i ~/.config/systemd/bruger vejviser. Hvis denne mappe ikke er til stede, kan den oprettes.
mkdir -s ~ / .config / systemd / brugerDet -s flag bruges til at oprette en overordnet mappe, hvis det kræves. Det ~ angiver den lokale brugers hjemmemappe og svarer til /hjem/bruger mens prikken før konfigurationsfilen gør den skjult. Lad os oprette en simpel bash script-fil, der vil skrive hukommelsesforbruget til en tekst hvert 30. minut. Jeg laver scriptet med navnet på script.sh .
#! /bin/bashmens rigtigt
gør
gratis -m >> / hjem / bruger / minfil.txt
søvn 1800
Færdig
Dette script kan oprettes hvor som helst, men sørg for, at stien angivet inde i scriptet er en absolut sti.
Lad os nu oprette en tjeneste, der udfører ovenstående script i baggrunden. Start en hvilken som helst teksteditor, såsom Nano eller Vim, og indsæt linjerne nedenfor i den.
[ Enhed ]Beskrivelse =Min tjeneste
[ Service ]
Type = enkel
ExecStart = / beholder / bash / hjem / bruger / script.sh
Genstart =ved fiasko
[ Installere ]
Efterlyst Af =default.target
I sektionen [Enhed] er Beskrivelse direktivet indeholder blot navnet på tjenesten. Bemærk, at det ikke bør være mere end 80 tegn.
Afsnittet [Service] indeholder de tre vigtige direktiver. For det første Type ; som er enkel , derefter ExecStart indeholdende den eksekverbare af vores brugerdefinerede script. Tjenesten genstarter kun, når der er en fejl.
Sektionen [Installer] indeholder Efterlyst Af direktiv som er default.target , hvilket antyder, at tjenesten vil blive aktiveret i systemtilstanden, når den nås på standardkørselsniveauet, som normalt er multi-user.target eller graphical.target.
Gem nu filen i ~/.config/systemd/bruger mappe med et hvilket som helst navn; Jeg navngiver den minservice.service .
Sådan administreres en normal brugerservice
For at administrere den normale brugertjeneste bruges systemctl-kommandoen med -bruger flag. Det -bruger flag angiver, at brugeren kontakter serviceadministratoren i stedet for systemet.
Efter at have oprettet den brugerspecifikke servicefil, er det første afgørende trin at genindlæse systemd-konfigurationsfilerne.
systemctl --bruger dæmon-genindlæsDette vil anvende ændringerne.
For at vide, om tjenesten kører eller ej, skal du bruge systemctl med -bruger flag og mulighed.
systemctl --bruger status [ tjeneste_navn ]
Andre kommandoer til at administrere den normale brugertjeneste er nævnt nedenfor:
systemctl --bruger Start [ tjeneste_navn ]systemctl --bruger aktivere [ tjeneste_navn ]
systemctl --bruger hold op [ tjeneste_navn ]
systemctl --bruger deaktivere [ tjeneste_navn ]
systemctl --bruger genstart [ tjeneste_navn ]
Sådan opretter du en normal brugertjeneste med systemadministratortilladelser
Der er mange tjenester, som en bruger opretter, men de kræver administratortilladelse for at køre. Sådanne tjenester kan oprettes ved at tilføje en Bruger direktiv til afsnittet [Service].
Det Bruger direktiv kan bruges til at nævne navnet på den bruger, hvis tilladelser er nødvendige for at køre tjenesten, som f.eks admin . Så hvis en normal bruger ønsker at oprette en tjeneste, der kræver administratortilladelser, skal du blot tilføje Bruger=admin i [Service] sektionen vil gøre jobbet. Denne tjeneste vil dog forblive aktiv, så længe administratoren er aktiv. Bemærk, at denne tjeneste ikke direkte kan kontrolleres af administratoren.
Konklusion
Den normale bruger kan også oprette en systemd service, men den skal placeres i ~/.config/systemd/bruger vejviser. Denne tjeneste kører, så længe brugeren, der oprettede den, er logget ind. Disse tjenester administreres også via systemctl-kommandoen, men med -bruger flag. Hvilket fortæller systemd, at tjenesten bliver kaldt af brugeren, ikke systemet. I denne vejledning oprettede jeg en brugerdefineret normal brugertjeneste og nævnte systemctl-kommandoer til at administrere den. Desuden fremhævede jeg også en metode til at skabe en tjeneste, der kræver administrative rettigheder.