INHOUDSOPGAWE:
- Stap 1: Gebruik metodes wat deur Systemd
- Stap 2: Configureer en gebruik van die Service Checker Scripts
- Stap 3: Laaste gedagtes
Video: Service Monitor Script vir Linux -bedieners: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Om 'n stabiele, altyd werkende stelsel te hê, selfs al gebruik u Linux, kan 'n moeilike taak wees.
As gevolg van die kompleksiteit van moderne sagtewarepakkette en slegte kodering, kan sommige prosesse noodwendig van tyd tot tyd ineenstort. Dit kan 'n slegte ding wees as u 'n bediener bestuur en sommige mense op hierdie dienste staatmaak.
Stap 1: Gebruik metodes wat deur Systemd
Soos u dalk reeds weet, gebruik die meeste moderne Linux -bedryfstelsels systemd.
As u nie bekend is met systemd nie, is dit volgens wikipedia:
"… 'n init -stelsel wat in Linux -verspreidings gebruik word om die gebruikersruimte te bootstrap en alle prosesse daarna te bestuur, in plaas van die UNIX System V of Berkeley Software Distribution (BSD) init -stelsels. …"
Baie mense redeneer nog steeds waarom dit nodig was om die goeie ou init -stelsel te vervang met hierdie meer ingewikkelde prosesbestuurstelsel, maar op die volgende skakel kan 'n goeie verduideliking gevind word:
www.tecmint.com/systemd-replaces-init-in-l…
Die belangrikste verbetering sou wees dat dit die stelsel vinniger as init kan opstel as gevolg van gelyktydige en parallelle verwerking tydens opstart in plaas van die opeenvolgende benadering van init
Sonder om in die dieptes van systemd te gaan, moet u 'n dienslêer skep om 'n proses by die systemd te voeg. Die sintaksis van so 'n lêer kan wissel van baie eenvoudig tot heeltemal ingewikkeld, en ons gaan nie in op die besonderhede nie. Om 'n basiese.service -lêer te hê, is dit voldoende om die volgende inskrywings te gebruik:
[Eenheid] Beskrywing = Beskrywing van applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Diens] Tipe = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = altyd [Installeer] WantedBy = multi-user.target
Plaas dit in die application.service -lêer in/lib/systemd/system folder.
Wat elkeen van hierdie opsies doen, word in die volgende skakel verduidelik:
access.redhat.com/documentation/en-US/Red_…
Gee die volgende opdrag om u aansoek te begin:
sudo systemctl begin application.service
Let wel: die.service -uitbreiding kan weggelaat word.
Om die aansoek te stop:
sudo systemctl stop application.service
As die konfigurasielêer verander is en u die instellings wil herlaai:
sudo systemctl herlaai application.service
Om die aansoek weer te begin:
sudo systemctl herlaai application.service
Om outomatiese aanvang by opstart moontlik te maak:
sudo systemctl aktiveer application.service
As dit aangeskakel is, sal die prosesbestuurder van die stelsel probeer om die toepassing te begin op grond van die instellings wat deur die stelsellêer verskaf is.
Om dit uit te skakel, gebruik dieselfde opdrag as hierbo, maar met die parameter 'deaktiveer'.
As u Restart = altyd in die dienslêer plaas, sal systemd die proses monitor en as dit nie in die proseslys gevind kan word nie, sal dit probeer om dit outomaties weer te begin.
As jy plaas
RestartSec = 30
na die herlaai -opdrag, sal dit 30 sekondes wag voordat die proses weer begin word. Dit kan nuttig wees, aangesien 'n deurlopende herbeginselpoging van 'n mislukte diens/toepassing kan lei tot 'n groot vraag na die stelsel (skryffoutlogboeke, ens.)
Soos u kan sien, bied systemd reeds 'n paar middele om die prosesse te monitor. In sommige gevalle is dit egter nie voldoende nie. Wat as 'n proses nie verlaat nie (dit sal steeds in die proseslys verskyn), maar dit reageer nie meer nie. In hierdie geval, om seker te maak dat 'n proses wel aan die gang is, moet u moontlik ekstra kontrole uitvoer.
Hier is waar die skrifte van hierdie instruksies handig te pas sal kom.
Stap 2: Configureer en gebruik van die Service Checker Scripts
As u meer beheer oor u lopende prosesse/dienste benodig, sal hierdie skrifte beslis nuttig wees.
Aangesien die kode effens groot is, word dit na github opgelaai en kan dit onder die volgende bewaarplek gevind word:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
Die 'hart' van die hele pakket is die
checkService.sh
Voordat u dit gebruik, moet u die volledige pad na die diensmap vervang. Dit kan aan die begin van die draaiboek gevind word.
Die script kan verskeie prosesse monitor en addisionele take uitvoer, soos hieronder beskryf:
Dit gaan deur elke lêer van die /services submap met.serv of.check uitbreidings en sal kyk of daar 'n aktiewe proses genaamd 'toepassing' is.
As daar geen '.check' -lêer vir 'n toepassing is nie, slegs application.serv -lêer:
As die proses aktief is, sal dit die proses as aktief beskou
As die proses onaktief is, begin die diens weer deur die volgende opdrag uit te voer:
systemctl herlaai aansoek
as die.serv -lêer leeg is!
As die.serv -lêer nie leeg is nie en uitvoerbare regte het, sal dit probeer om dit as 'n gewone BASH -script uit te voer.
Dit is handig as u ook iets moet doen, behalwe om die diens weer te begin.
Byvoorbeeld, in die spamd.serv -lêer, vanaf die repo hierbo, as die spamd -diens dood is, moet die spamassassin -diens in plaas daarvan weer begin word, wat ook spamd herlaai. Dit is nie voldoende om net spamd weer te begin nie.
U kan die inhoud van so 'n serv -lêer volgens die behoeftes wysig.
'N Ander voorbeeld is die pcscd.serv -lêer. In hierdie geval is verskeie ander prosesse ook weer begin/doodgemaak.
As daar 'n kontrolelêer is, sal die scriptlêer ook uitgevoer word om addisionele kontrole uit te voer nadat die proses uitgevoer is.
Byvoorbeeld, vir die oscam -diens het ons 'n tjeklêer geskep wat probeer om aan te sluit by die webkoppelvlak om te sien of dit suksesvol is. Indien nie, reageer die diens nie, alhoewel die proses aktief is, en moet dit weer begin. Die herbegin van die diens moet deur die.check -lêer self uitgevoer/gebel word.
'N Ander voorbeeld is die mediatomb DLNA -diens.
Dit is 'n klein bediener wat video-/klankinhoud aan DLNA -kliënte verskaf en self op die netwerk uitsaai. Soms hang die diens af en kan dit nie meer ontdek word nie, maar die proses is steeds aktief. Om te kyk of die diens ontdekbaar is, is die CLI-program genaamd gssdp-discover gebruik. Die hele kode wat die DLNA -bediener kontroleer, is in 'n mediatomb.check -script geplaas.
Dit is slegs 'n paar voorbeelde van hoe u die.serv- en.check -lêers kan gebruik.
Om 'n nuwe diens te monitor, moet u 'n.serv en, indien nodig, ook 'n tjeklêer skep en die ooreenstemmende skrif daarin skryf.
As slegs die teenwoordigheid van die proses nagegaan word, is 'n leë.serv -lêer voldoende. As addisionele kontrole uitgevoer moet word, moet 'n.check -lêer geskep word en 'n klein skrif geskryf word om die taak te verrig.
Natuurlik moet die.sh -script gereeld uitgevoer word, daarom moet daar ook 'n cron -taak daarvoor geskep word:
#kyk elke 5 minute na dienste/ * * * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null
Stap 3: Laaste gedagtes
Ek hoop dat u hierdie pakket nuttig sal vind, aangesien dit baie eenvoudig die monitering van Linux -prosesse kan doen en hopelik die stilstand van u dienste tot 'n minimum sal beperk.
Laai gerus ekstra skrifte op na github as u nuwes skep. Laat weet my net, en ek sal u as bydraer byvoeg.
Aanbeveel:
Arduino motorwaarskuwingstelsel vir omgekeerde parkering - Stap vir stap: 4 stappe
Arduino -waarskuwingstelsel vir omgekeerde parkeerterrein | Stap vir stap: In hierdie projek ontwerp ek 'n eenvoudige Arduino Car Reverse Parking Sensor Circuit met behulp van Arduino UNO en HC-SR04 Ultrasonic Sensor. Hierdie Arduino -gebaseerde motor -omkeerwaarskuwingstelsel kan gebruik word vir 'n outonome navigasie, robotafstand en ander reeks
Opstelling vir eksterne Bluetooth GPS -verskaffer vir Android -toestelle: 8 stappe
Opstelling vir eksterne Bluetooth GPS-verskaffer vir Android-toestelle: hierdie instruksies sal verduidelik hoe u u eie eksterne Bluetooth-gps vir u telefoon kan aanbring, maar dit kan slegs teen ongeveer $ 10 aanbring.Materiaal: NEO 6M U-blox GPSHC-05 bluetooth-moduleKennis van koppelvlak Blutooth lae energie modules Ardui
E.S.D.U (Emergency Service Droid Unit): 7 stappe
E.S.D.U (Emergency Service Droid Unit): Vandag gaan ons 'n E.S.D.U (Emergency Service Droid Unit) bou. Die E.S.D.U is verdeel in 3 klasse: Polisie, brandweer en medies. Al hierdie is nog nie ten volle ontwikkel nie, maar ek hoop dat ons dit as kommando saam kan opgradeer en ontwikkel
Hoe om 'n 2d -karakter te skep met 'n karakterbeheerder in Unreal Engine 4 met behulp van Visual Script vir 'n rekenaar: 11 stappe
Hoe om 'n 2d -karakter te skep met 'n karakterbeheerder in Unreal Engine 4 Met behulp van Visual Script vir 'n rekenaar: Hoe om 'n 2d -karakter met 'n karakterbeheerder in Unreal engine 4 te skep met behulp van 'n visuele script vir 'n rekenaar Hallo, ek is Jordan Steltz. Ek ontwikkel videospeletjies sedert ek 15 was. Hierdie tutoriaal leer u hoe u 'n basiese karakter kan skep met
Opstel om 'n Picaxe via Shell Script (Linux) te programmeer: 5 stappe
Opstel om 'n Picaxe via Shell Script (Linux) te programmeer: Eenvoudige deurloop wat wys hoe u 'n shell -script kan maak wat 'n program van 'n ftp -webwerf kan laai, dan saamstel en dit dan aflaai na die picaxe. (Dit is ook my eerste instruksies)