Systemd: vader van alle andere processen
Een Linux en elk ander *nix-systeem start altijd een proces dat de vader is van alle andere processen. Wanneer u Systemd gebruikt, is dat proces systemd, het proces wordt altijd 'init' genoemd, ongeacht het init-systeem. Zodra systemd draait, zal het de daemons starten die de subsystemen uitvoeren. De daemons bepalen welke bronnen je hebt en welke systemen open zijn. Uw aanmeldingsprompt is een service die wordt beheerd door systemd. Systemd start vele andere services en het koppelt ook al je schijven, inclusief de snap-mounts.
Hoe bepaal je wat begint??
Allereerst had het vroegste init-systeem runlevels die veel lezers zullen herkennen. Runlevel 1 was modus voor één gebruiker, 2 modus voor meerdere gebruikers zonder netwerk en 3-5 voor meerdere gebruikers en grafisch. Het runlevel instellen op 0 betekende stoppen en 6 betekende opnieuw opstarten. Ontwikkelaars van systemd vonden deze niveaus onduidelijk, dus veranderden ze in doelen. Doelen zijn niet precies hetzelfde, maar hebben een vergelijkbare functie. Wanneer een specifiek doel actief is, is er een specifieke verzameling eenheden actief. Later meer over eenheden.
Het "runlevel" instellen, een doel genoemd.
U kunt het doel tijdens het hardlopen wijzigen, u kunt bijvoorbeeld een terminal gebruiken om uw doel in te stellen op meerdere gebruikers. Dit zou uw GUI, X of Wayland stoppen, maar u en anderen laten inloggen met een tekstconsole. Gebruik de volgende opdracht:.
$ systemctl isolate multiuser.doelwitOf, als u uw bureaublad wilt starten, gebruikt u in plaats daarvan de volgende opdracht:.
$ systemctl isolate graphical graphic.doelwitWaar je echt in geïnteresseerd bent, is hoe je het juiste niveau kunt starten, je kunt op deze manier ontdekken wat je nu hebt.
$ systemctl get-defaultOm de standaardinstelling te wijzigen:.
$ systemctl set-default grafisch.doelwitDeze opdracht zorgt ervoor dat veel eenheden en services starten terwijl u uw computer opstart. Misschien wilt u echter een enkele service starten of stoppen.
STARTEN, stoppen, inschakelen en uitschakelen van een service.
Hier heb je de kans om te veranderen wat er gebeurt bij het opstarten en tijdens normaal gebruik. In tegenstelling tot de doelen zijn eenheden speciaal voor een bepaalde dienst. Om een dienst te stoppen gebruik je 'systemctl stop', evengoed kun je 'start' en 'restart' gebruiken. Om een service bij het opstarten te laten starten, gebruik je 'enable', om hem te stoppen 'disable'. Kies een service en start en stop deze terwijl deze actief is.
$ systemctl status kopjes.onderhoudDeze opdracht toont de status van de service, het toont ook een lijst met acties die door het systeem zijn ondernomen met betrekking tot de service. Gebruik de onderstaande opdracht om de service te stoppen:.
$ systemctl stop cups.onderhoudDe service is nu gestopt voor uw huidige sessie. Om het te veranderen in niet starten bij de volgende keer opstarten, gebruik uitschakelen.
$ systemctl kopjes uitschakelen.onderhoudMerk op dat u de service alleen kunt uitschakelen, dit heeft geen effect op uw huidige situatie. De service blijft gewoon draaien. Bij de volgende keer opstarten zal het de service echter niet starten.
Systemd bestuurt ook houders, apparaten, stopcontacten en meer. Eenheden zijn lager en gemakkelijker te begrijpen, als je eerder met Linux te maken hebt gehad. Je kunt deze ook zelf instellen, maar het meeste effect bij het opstarten is het bedienen van services.
Hoe voeg je je eigen scripts toe?
U kunt vrij eenvoudig uw eigen scripts toevoegen, de details die interessant zijn om te weten, zijn hoe u uw script of service afhankelijk maakt van anderen. Dit wordt netjes gedemonstreerd in dit wifi-resume-servicebestand.
[Eenheid]Description=Herstart netwerkmanager bij hervatten
Na=opschorten.doelwit
Na = winterslaap.doelwit
Na=hybride slaap.doelwit
[Onderhoud]
Type=oneshot
ExecStart=/bin/systemctl herstart netwerkmanager.onderhoud
[Installeren]
WantedBy=opschorten.doelwit
WantedBy=slaapstand.doelwit
WantedBy=hybride-slaap.doelwit
Deze code creëert een service die één keer (oneshot) plaatsvindt na de drie doelen die in de code worden genoemd. De code die wordt uitgevoerd is in dit geval een enkele opdracht. Je kunt ExecStart net zo goed verwijzen naar een script naar keuze.
Conclusie
Je systeem veranderen, vooral hoe het opstart, kun je zelf doen, maar let op dat dit veel gevolgen heeft voor elke service, dus zorg ervoor dat je code stabiel is en snel kan worden uitgevoerd.