Introductie
In de afgelopen jaren zijn Linux-distributies steeds meer overgestapt van andere init-systemen naar systemd
. Het systemd
-pakket met tools biedt een snel en flexibel initialisatiemodel voor het beheren van een volledige machine vanaf het opstarten.
In deze handleiding geven we u een snel overzicht van de belangrijkste commando’s die u moet kennen voor het beheren van een systemd
-geactiveerde server. Deze moeten werken op elke server die systemd
implementeert (elke OS-versie op of boven Ubuntu 15.04, Debian 8, CentOS 7, Fedora 15). Laten we beginnen.
Basis Unitbeheer
Het basisobject dat systemd
beheert en waarmee het werkt, is een “unit”. Units kunnen van veel types zijn, maar het meest voorkomende type is een “service” (aangeduid door een eenheidbestand met de extensie .service
). Om services te beheren op een systemd
-geactiveerde server, is ons belangrijkste gereedschap het systemctl
-commando.
Alle normale init-systeemcommando’s hebben equivalent acties met het systemctl
-commando. We zullen de nginx.service
-unit gebruiken om dit te demonstreren (u moet Nginx installeren met uw pakketbeheerder om dit servicebestand te verkrijgen).
Bijvoorbeeld, we kunnen de service starten door te typen:
We kunnen het opnieuw stoppen door te typen:
Om de service te herstarten, kunnen we typen:
Om te proberen de service opnieuw te laden zonder de normale functionaliteit te onderbreken, kunnen we typen:
Units in- of uitschakelen
Standaard worden de meeste systemd
-unitbestanden niet automatisch gestart bij het opstarten. Om deze functionaliteit te configureren, moet je de unit ‘inschakelen’. Hierdoor wordt het gekoppeld aan een bepaald opstart ‘doel’, waardoor het wordt geactiveerd wanneer dat doel wordt gestart.
Om een service automatisch te laten starten bij het opstarten, typ:
Als je de service weer wilt uitschakelen, typ:
Een overzicht krijgen van de systeemstatus
Er is veel informatie die we kunnen halen uit een systemd
-server om een overzicht te krijgen van de systeemstatus.
Om bijvoorbeeld alle unitbestanden te krijgen die systemd
als ‘actief’ heeft vermeld, typ (je kunt eigenlijk de list-units
weglaten omdat dit het standaardgedrag van systemctl
is):
Om alle eenheden op te sommen die systemd
heeft geladen of heeft geprobeerd in het geheugen te laden, inclusief diegene die momenteel niet actief zijn, voegt u de --all
schakelaar toe:
Om alle eenheden geïnstalleerd op het systeem weer te geven, inclusief diegene die systemd
niet heeft geprobeerd in het geheugen te laden, typt u:
Basis Log Informatie Bekijken
A systemd
component called journald
collects and manages journal entries from all parts of the system. This is basically log information from applications and the kernel.
Om alle logboekvermeldingen te zien, te beginnen bij de oudste vermelding, typt u:
Standaard toont dit u vermeldingen van de huidige en vorige opstarts als journald
is geconfigureerd om vorige opstartrecords op te slaan. Sommige distributies schakelen dit standaard in, terwijl andere dat niet doen (om dit in te schakelen, bewerk het bestand /etc/systemd/journald.conf
en stel de Storage=
optie in op “persistent”, of maak de persistente directory aan door sudo mkdir -p /var/log/journal
te typen).
Als u alleen de logboekvermeldingen van de huidige opstart wilt zien, voegt u de -b
vlag toe:
Om alleen kernelberichten te zien, zoals die typisch worden vertegenwoordigd door dmesg
, kunt u de -k
vlag gebruiken:
Nogmaals, u kunt dit beperken tot alleen de huidige opstart door de -b
vlag toe te voegen:
Opvragen van eenheidstoestanden en logs
Terwijl de bovenstaande commando’s toegang gaven tot de algemene systeemstatus, kunt u ook informatie krijgen over de status van afzonderlijke eenheden.
Om een overzicht te zien van de huidige status van een eenheid, kunt u de status
-optie gebruiken met het systemctl
-commando. Dit laat zien of de eenheid actief is, informatie over het proces en de laatste logboekvermeldingen:
Om alle logboekvermeldingen voor de betreffende eenheid te zien, geeft u de -u
-optie met de eenheidsnaam aan het journalctl
-commando:
Zoals altijd kunt u de vermeldingen beperken tot de huidige opstart door de -b
-vlag toe te voegen:
Inspecteren van eenheden en eenheidsbestanden
Op dit moment weet u hoe u de toestand van een eenheid kunt wijzigen door deze te starten of te stoppen, en u weet hoe u toestands- en logboekinformatie kunt bekijken om een idee te krijgen van wat er met het proces gebeurt. We hebben echter nog niet gezien hoe we andere aspecten van eenheden en eenheidsbestanden kunnen inspecteren.
A unit file contains the parameters that systemd
uses to manage and run a unit. To see the full contents of a unit file, type:
Om de afhankelijkheidsstructuur van een eenheid te zien (welke eenheden systemd
zal proberen te activeren bij het starten van de eenheid), typt u:
Dit zal de afhankelijke eenheden tonen, met doel
eenheden recursief uitgebreid. Om alle afhankelijke eenheden recursief uit te breiden, geef de --alle
vlag door:
Tenslotte, om de details op laag niveau van de instellingen van de eenheid op het systeem te zien, kunt u de tonen
optie gebruiken:
Dit zal u de waarde geven van elk parameter dat wordt beheerd door systemd
.
Unit-bestanden aanpassen
Als u een wijziging moet aanbrengen in een eenheidsbestand, staat systemd
u toe om wijzigingen aan te brengen vanuit het systemctl
commando zelf zodat u niet naar de werkelijke schijflocatie hoeft te gaan.
Om een eenheidsbestandfragment toe te voegen, wat kan worden gebruikt om instellingen in het standaard eenheidsbestand toe te voegen of te overschrijven, roept u eenvoudigweg de bewerken
optie aan op de eenheid:
Als u de hele inhoud van het eenheidsbestand wilt wijzigen in plaats van een fragment te maken, geef dan de --volledig
vlag door:
Na het wijzigen van een eenheidsbestand, moet u het systemd
proces zelf opnieuw laden om uw wijzigingen op te pikken:
Gebruik van Doelen (Runlevels)
Een andere functie van een initialisatiesysteem is om de server zelf tussen verschillende toestanden over te schakelen. Traditionele initialisatiesystemen verwijzen typisch naar deze als “runlevels”, waardoor het systeem slechts in één runlevel tegelijk kan zijn.
In systemd
, worden in plaats daarvan “doelen” gebruikt. Doelen zijn in feite synchronisatiepunten die de server kan gebruiken om de server in een specifieke toestand te brengen. Service- en andere eenheidsbestanden kunnen aan een doel worden gekoppeld en meerdere doelen kunnen tegelijk actief zijn.
Om alle beschikbare doelen op uw systeem te zien, typt u:
Om het standaarddoel te bekijken dat systemd
probeert te bereiken bij het opstarten (dat op zijn beurt alle eenheidsbestanden start die de afhankelijkheidsstructuur van dat doel vormen), typt u:
U kunt het standaarddoel dat bij het opstarten wordt gebruikt wijzigen door de set-default
-optie te gebruiken:
Om te zien welke eenheden aan een doel zijn gekoppeld, kunt u typen:
U kunt de systeemtoestand wijzigen om over te schakelen tussen doelen met de isolate
-optie. Hiermee worden alle eenheden gestopt die niet aan het gespecificeerde doel zijn gekoppeld. Zorg ervoor dat het doel dat u isoleert geen essentiële services stopt:
Het stoppen of herstarten van de server
Voor sommige van de belangrijkste toestanden waarnaar een systeem kan overgaan, zijn snelkoppelingen beschikbaar. Zo kunt u bijvoorbeeld om uw server uit te schakelen, typen:
Als u het systeem liever opnieuw wilt opstarten, kunt u dat doen door het volgende in te typen:
U kunt opstarten in reddingsmodus door het volgende in te typen:
Merk op dat de meeste besturingssystemen traditionele aliassen bevatten voor deze bewerkingen, zodat u eenvoudig sudo poweroff
of sudo reboot
kunt typen zonder systemctl
. Dit is echter niet gegarandeerd op alle systemen te zijn ingesteld.
Volgende stappen
Op dit moment zou u de basisprincipes moeten kennen van het beheren van een server die systemd
gebruikt. Er is echter nog veel meer te leren naarmate uw behoeften toenemen. Hieronder vindt u links naar handleidingen met meer gedetailleerde informatie over enkele van de componenten die we in deze gids hebben besproken:
- Hoe Systemctl te Gebruiken om Systemd Services en Units te Beheren
- Hoe Journalctl te Gebruiken om Systemd-logs te Bekijken en te Manipuleren
- Het Begrijpen van Systemd Units en Unit-bestanden
Door te leren hoe u de sterke punten van uw init-systeem kunt benutten, kunt u de status van uw machines beheren en uw services en processen gemakkelijker beheren.