Systeem V, systemd en Upstart

Het controleren van Linux diensten

Init proces

Het init proces op Linux systemen staat algemeen bekend als de moeder van alle processen. Het “init” proces heeft altijd een proces ID van “1” (pid van 1), het is het eerste proces dat wordt gestart door de kernel op uw systeem. init is een afkorting voor initialisatie en wordt gebruikt om alle andere processen en uw standaard runlevel te starten. In de loop der tijd hebben veel distributies de System V standaard overgenomen voor het beheren van diensten, maar andere distributies zijn overgestapt op “Systemd” of “Upstart”.

SysV – System V

Als uw Linux distributie gebruik maakt van de “SysV” standaard, dan zal init een bestand onderzoeken genaamd “/etc/inittab. Dit bestand bevat het standaard runlevel waarmee het systeem moet starten. Bijvoorbeeld “id:3:initdefault:” zou automatisch alle scripts in de runlevel 3 directory-structuren starten.
Run Level 1 – Single User Mode
Run Level 2 – Zelfde als runlevel 3, maar zonder NFS
Run Level 3 – Multi-user en netwerk mode
Run Level 4 – Ongebruikt
Run Level 5 – Zelfde als runlevel 3, maar met een grafische desktop (X window System)
Voor meer informatie over het boot proces: Linux opstarten

Het draaien van “System V” init scripts

Natuurlijk vaak moet je als beheerder een bepaalde dienst/ddaemon stoppen, starten, herstarten of opnieuw laden. Om dit te doen, gebruiken we een commando genaamd “service”. Met dit commando kunt u “System V” scripts uitvoeren, die normaal gesproken in de “/etc/init.d” directory staan. Behalve dat we een service/daemon kunnen starten en stoppen, kunnen we ook de huidige status bekijken.

service commando voorbeelden

Status controleren: Hier vragen we de huidige status op van de daemon “sshd”

# service sshd statusopenssh-daemon (pid 1599) is running...

Statuscontrole op alle processen: Start al uw init-scripts in alfabetische volgorde met de status optie. Hieronder is een uittreksel van de uitvoer van deze opdracht:

# service --status-allabrt-ccpp hook is installedabrtd (pid 1708) is running...abrt-dump-oops (pid 1716) is running...acpid (pid 1487) is running...atd (pid 1740) is running...auditd (pid 1262) is running...automount (pid 1571) is running...avahi-daemon (pid 1375) is running...Usage: /etc/init.d/bluetooth {start|stop}certmonger (pid 1752) is running...cpuspeed is stoppedcrond (pid 1724) is running...cupsd (pid 1476) is running...dnsmasq is stoppedfirstboot is not scheduled to runhald (pid 1496) is running...

Stop: Hier hebben we gevraagd om de “sshd” daemon te laten stoppen. De statusoptie is ook gegeven om de nieuwe status te controleren.

# service sshd stopStopping sshd: # service sshd statusopenssh-daemon is stopped

Start: Deze keer vragen we om de “sshd” te starten.

# service sshd startStarting sshd: 

Herstart: Deze keer gaan we de “sshd” daemon “stuiteren” (stoppen en dan direct weer opstarten).

# service sshd restartStopping sshd: Starting sshd: 

Herladen: De “reload” optie is erg handig als u wijzigingen hebt gemaakt in een configuratiebestand en u deze wijzigingen wilt binnenhalen.

# service sshd reloadReloading sshd: 

Upstart

Upstart is een event-gebaseerde vervanging voor de “init” daemon. Upstart is geschreven door een voormalig medewerker van het bekende bedrijf dat ons Ubuntu levert (Canonical). Het idee achter Upstart was om af te stappen van het traditionele startproces waarbij taken die gestart werden, eerst moesten worden voltooid voordat de volgende taak kon starten. Upstart is een gebeurtenis gestuurd systeem dat het mogelijk maakt om asynchroon te reageren op systeemgebeurtenissen. Upstart is verantwoordelijk voor het starten en stoppen van diensten en taken bij het opstarten en afsluiten. Het controleert ook actief deze diensten en taken. Upstart is ook in staat om sysvinit scripts uit te voeren zonder aanpassing. Verschillende distributies hebben Upstart opgenomen als vervanging voor System V. Dit zijn onder andere RHEL, CentOS, Fedora. Echter, veel van deze systemen zijn nu overgegaan op “systemd”
Zoals we eerder zagen, kunnen we services/daemons controleren met het “service” commando onder System V, maar onder Upstart gebruiken we een ander commando. Het commando dat wordt gebruikt bij Upstart is “initctl”. Met dit commando kun je communiceren met de init daemon. Hieronder staan enkele basisvoorbeelden van het “initctl” commando in gebruik.

initctl commando voorbeelden

Statuscontrole: Met deze optie wordt de status van de opgegeven taak opgevraagd.

root@john-desktop:~# initctl status cupscups start/running, process 672

De naam van de taak wordt eerst gegeven, gevolgd door het huidige doel en de status van de instantie en vervolgens het proces-id nummer.
Stop: De optie “stop” geeft aan dat de gewenste status “gestopt” moet zijn.

root@john-desktop:~# initctl stop cupscups stop/waiting

Start: Met de optie “start” wordt een nieuwe instantie van de opgegeven taak gestart.

root@john-desktop:~# initctl start cupscups start/running, process 3574

Herstart: Deze optie zorgt ervoor dat de gespecificeerde taak opnieuw wordt opgestart. De instantie die opnieuw wordt gestart zal zijn oorspronkelijke configuratie behouden.

root@john-desktop:~# initctl restart cupscups start/running, process 3606

Laden: Deze optie zal de gespecificeerde instantie opnieuw laden.

root@john-desktop:~# initctl reload cups

Lijst: Lijst vraagt om alle jobs/instanties en hun bijbehorende status weer te geven. Hieronder ziet u een voorbeeld van de uitvoer van deze opdracht:

root@john-desktop:~# initctl listavahi-daemon start/running, process 611mountall-net stop/waitingnmbd stop/waitingpasswd stop/waitingrc stop/waitingrsyslog start/running, process 601tty4 start/running, process 1080udev start/running, process 437upstart-udev-bridge start/running, process 429

Laad Configuratie: Deze optie zorgt ervoor dat de init daemon zijn configuratiebestanden opnieuw laadt. Er worden geen taken opnieuw gestart door deze opdracht.

root@john-desktop:~# initctl reload-configuration cups

Onder normale omstandigheden zou u de bovenstaande opdracht Herladen niet hoeven te geven, omdat “init” zijn configuratiemappen in de gaten houdt met “inotify” en automatisch herlaadt als er een verandering optreedt.

systemd

systemd is een andere vervanging voor System V. systemd staat voor systeem-daemon. De naam staat bewust in kleine letters! systemd is ontworpen om beter om te kunnen gaan met afhankelijkheden en om meer werk parallel te kunnen doen bij het opstarten. systemd ondersteunt snapshotting van je systeem en het herstellen van je systeemstatus, houdt processen bij die zijn opgeslagen in een zogenaamde “cgroup” in tegenstelling tot de conventionele “PID” methode. systemd is nu overgenomen door veel populaire Linux distributies. Fedora, Mandriva, Mageia, Arch Linux. Er zijn ook plannen om systemd op te nemen in nieuwere versies van RHEL (Red hat).
Zoals we zagen bij “System V” en “Upstart” hebben beide typen hun eigen unieke commando voor het aansturen van services. Hetzelfde geldt voor systemd. Het commando dat onder systemd wordt gebruikt is “systemctl”. Hieronder staan een paar voorbeelden van de basisfunctionaliteit van het “systemctl” commando.

systemctl stop mytest.service

systemctl restart mytest.service

systemd commando Beschrijving
systemctl start mytest.service Start gespecificeerde service
Stopt opgegeven service
systemctl status mytest.service Vraag status van opgegeven service
systemctl list-unit-files –type=service Lijst bekende services die kunnen worden gestart of gestopt
Start en stopt vervolgens opgegeven service
systemctl reload mytest.service Indien ondersteund worden de configuratiebestanden opnieuw geladen
systemctl enable mytest.service Equivalent aan chkconfig mytest on
systemctl disable mytest.service Equivalent aan chkconfig mytest off
systemctl is-enabled mytest.service Kijkt of de service is geconfigureerd om te starten in het huidige runlevel

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *