systemd

Systemd - Hur det startar Ditt system

Systemd - Hur det startar Ditt system
Systemd utvecklades när utvecklare upptäckte att det inte var möjligt att starta systemet parallellt. De äldre systemen går igenom sina systemstartfiler en efter en. Detta kan få start att stoppa när du väntar på resurser som är långsamma. Ett exempel på detta är när en process måste ha nätverket igång. Att använda nätverket är mycket långsamt, andra resurser behöver inte vänta. Detta problem kan mildras på andra sätt men med systemd görs all start parallellt där det är möjligt. Resultatet borde vara en mycket snabbare start för komplexa system, som inkluderar ditt stationära system.

Systemd: Far till alla andra processer

Ett Linux-system och alla andra * nix-system startar alltid en process som är far till alla andra processer. När du använder Systemd kallas processen systemd, processen kallas alltid 'init' oavsett init-system. När systemd körs startar demonerna som kör delsystemen. Demonerna styr vilka resurser du har och vilka system som är öppna. Din inloggningsprompt är en tjänst som hanteras av systemd. Systemd startar många andra tjänster och det monterar också alla dina skivor, inklusive snäppfästen.

Hur kontrollerar du vad som börjar?

Först och främst hade det tidigaste init-systemet körnivåer som många läsare kommer att känna igen. Runlevel 1 var enanvändarläge, 2 fleranvändarläge utan nätverk och 3-5 fleranvändare och grafiskt. Att sätta körnivån till 0 innebar stopp och 6 innebar omstart. Utvecklare av systemd tyckte att dessa nivåer var oklara, så ändrade det för att kallas mål. Målen är inte exakt desamma men har en liknande funktion. När ett specifikt mål körs körs en specifik samling enheter. Mer om enheter senare.

Ställa in ”runlevel”, kallat ett mål.

Du kan ändra målet medan du kör, till exempel kan du använda en terminal för att ställa in ditt mål till fleranvändare. Detta skulle stoppa ditt GUI, X eller Wayland men låta dig och andra logga in med en textkonsol. Använd följande kommando.

$ systemctl isolera fleranvändare.mål

Eller, om du vill starta skrivbordet, använd följande kommando istället.

$ systemctl isolera grafiskt.mål

Vad du verkligen är intresserad av är hur man startar rätt nivå, du kan ta reda på vad du har just nu på detta sätt.

$ systemctl get-default

För att ändra standard ställer du in det.

$ systemctl set-default grafiskt.mål

Detta kommando gör faktiskt att många enheter och tjänster börjar när du startar din dator. Du kanske vill starta eller stoppa en enda tjänst.

STARTA, stoppa, aktivera och inaktivera en tjänst.

Det är här du har en chans att ändra vad som händer vid start och under normal drift. Till skillnad från målen är enheterna speciella för en viss tjänst. För att stoppa en tjänst använder du 'systemctl stop', du kan också använda 'start' och 'starta om'. För att starta en tjänst vid start använder du 'aktivera', för att stoppa det 'inaktivera'. Välj en tjänst och starta och stoppa den medan den är igång.

$ systemctl statuskoppar.service

Detta kommando visar tjänstens status, det visar också en lista över åtgärder som vidtas av systemet angående tjänsten. För att stoppa tjänsten, använd kommandot nedan.

$ systemctl stoppkoppar.service

Tjänsten stoppas nu för din nuvarande session. För att ändra det till att inte starta vid nästa start, använd inaktivera.

$ systemctl inaktivera koppar.service

Observera att du bara kunde inaktivera tjänsten, detta skulle inte ha någon inverkan på din nuvarande situation. Tjänsten fortsätter bara. Vid nästa start startar dock inte tjänsten.

Systemd styr också fästen, enheter, uttag och mer. Enheter är lägre och lättare att förstå om du har handlat med en Linux tidigare. Du kan också ställa in dessa själv men den största effekten på start är att kontrollera tjänster.

Hur lägger du till dina egna skript?

Du kan lägga till dina egna skript ganska enkelt, detaljerna som är intressanta att veta är hur du gör ditt skript eller tjänst beroende av andra. Detta demonstreras snyggt i denna wifi-CV-servicefil.

[Enhet]
Beskrivning = Starta om nätverkshanteraren vid CV
Efter = avbryt.mål
Efter = viloläge.mål
Efter = hybrid-sömn.mål
 
[Service]
Typ = oneshot
ExecStart = / bin / systemctl starta om nätverkshanteraren.service
 
[Installera]
WantedBy = avbryta.mål
WantedBy = viloläge.mål
WantedBy = hybrid-sömn.mål

Den här koden skapar en tjänst som sker en gång (oneshot) efter de tre mål som nämns i koden. Koden som körs är i detta fall ett enda kommando. Du kan lika gärna peka ExecStart på ett skript du väljer.

Slutsats

Om du ändrar ditt system, särskilt hur det startar, kan du göra det själv men se upp för att detta har många konsekvenser för varje tjänst så se till att din kod är stabil och snabb att utföra.

Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...