Innehållsförteckning:
- Steg 1: Använda metoder från Systemd
- Steg 2: Konfigurera och använda Service Checker Scripts
- Steg 3: Sista tankarna
Video: Service Monitor Script för Linux -servrar: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Att ha ett stabilt system som alltid körs, även om du använder Linux, kan vara en svår uppgift.
På grund av komplexiteten i moderna mjukvarupaket och dålig kodning kan oundvikligen vissa processer krascha då och då. Detta kan vara en dålig sak om du kör en server och vissa människor förlitar sig på dessa tjänster.
Steg 1: Använda metoder från Systemd
Som du kanske redan vet använder de flesta moderna Linux -operativsystem systemd.
Om du inte är bekant med systemd är detta enligt wikipedia:
"… ett init -system som används i Linux -distributioner för att starta upp användarutrymmet och hantera alla processer därefter, istället för UNIX System V eller Berkeley Software Distribution (BSD) init -system. …"
Många argumenterar fortfarande varför det var nödvändigt att ersätta det gamla gamla init -systemet med detta mer komplicerade processhanteringssystem, men på följande länk kan man hitta en bra förklaring:
www.tecmint.com/systemd-replaces-init-in-l…
Den viktigaste förbättringen skulle vara att det kan ta upp systemet snabbare än init, på grund av samtidig och parallell bearbetning vid start istället för den sekventiella metoden för init
Utan att gå in i djupet av systemd måste du skapa en servicefil för att lägga till en process till systemd. Syntaxen för en sådan fil kan sträcka sig från mycket enkel till fullständigt komplicerad, och vi kommer inte att gå in på detaljer. För att ha en grundläggande.service -fil är det tillräckligt att använda följande poster:
[Enhet] Beskrivning = Beskrivning av applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = alltid [Installera] WantedBy = multi-user.target
Placera dessa i application.service -filen i/lib/systemd/systemmappen.
Vad var och en av dessa alternativ gör förklaras i följande länk:
access.redhat.com/documentation/en-US/Red_…
Om du vill starta din ansökan, utfärdar du följande kommando:
sudo systemctl start application.service
Obs! Tillägget.service kan utelämnas.
Så här stoppar du programmet:
sudo systemctl stoppa application.service
Om konfigurationsfilen har ändrats och du vill ladda om inställningarna:
sudo systemctl ladda om application.service
Så här startar du om programmet:
sudo systemctl starta om application.service
Så här aktiverar du automatisk start vid start:
sudo systemctl aktivera application.service
Om detta är aktiverat kommer systemd processhanteraren att försöka starta programmet baserat på inställningarna som gavs av systemfilen.
För att inaktivera det, använd samma kommando som ovan, men med parametern 'inaktivera'.
Om du placerar Restart = alltid i servicefilen, kommer systemd att övervaka processen och om den inte kan hittas i processlistan försöker den starta om den automatiskt.
Om du placerar
RestartSec = 30
efter omstartdirektivet väntar det i 30 sekunder innan processen försöker starta om. Detta kan vara användbart, eftersom ett kontinuerligt omstartförsök av en misslyckad tjänst/applikation kan leda till stor efterfrågan på systemet (skrivfelloggar osv)
Som du kan se tillhandahåller systemd redan några sätt att övervaka processerna. I vissa fall kan detta dock inte vara tillräckligt. Vad händer om en process inte avslutas (den kommer fortfarande att finnas i processlistan), men den slutar svara. I det här fallet kan du behöva ytterligare kontroller för att säkerställa att en process verkligen är igång.
Det är här manus från denna instruerbara kommer till nytta.
Steg 2: Konfigurera och använda Service Checker Scripts
Om du behöver mer kontroll över dina processer/tjänster som körs kommer dessa skript att vara till hjälp, helt klart.
Eftersom koden är något stor, laddas den upp till github och kan hittas under följande förråd:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
"Hjärtat" i hela paketet är
checkService.sh
Innan du använder den måste du ersätta hela sökvägen till servicemappen. Detta finns i början av manuset.
Skriptet kan övervaka flera processer och utföra ytterligare uppgifter, enligt beskrivningen nedan:
Den går igenom varje fil från undermappen /services som har.serv eller.check tillägg och kontrollerar om det finns en aktiv process som kallas 'applikation'.
Om det inte finns någon ".check" -fil för ett program, bara filen application.serv:
Om processen är aktiv kommer den att betrakta processen som aktiv
Om processen är inaktiv startar den om tjänsten genom att utfärda följande kommando:
systemctl starta om programmet
om.serv -filen är tom!
Om.serv -filen inte är tom och har körbara rättigheter försöker den köra den som ett vanligt BASH -skript.
Detta är användbart om något måste göras förutom att bara starta om tjänsten.
Till exempel, i spamd.serv -filen, från repo ovan, om spamd -tjänsten är död, måste spamassassin -tjänsten startas om istället, vilket också startar om spamd. Att bara starta om spamd skulle inte vara tillräckligt.
Man kan redigera innehållet i en sådan servfil enligt behoven.
Ett annat exempel är filen pcscd.serv. I detta fall startades/dödades också flera andra processer.
Om det finns en kontrollfil, efter att ha kontrollerat om processen körs, kommer den också att köra denna skriptfil för att utföra ytterligare kontroller.
Till exempel för oscam -tjänsten har vi skapat en kontrollfil som försöker ansluta till dess webbgränssnitt för att se om det lyckas. Om inte, trots att processen är aktiv, svarar tjänsten inte och måste startas om. Omstarten av tjänsten måste utföras/anropas av själva.check -filen.
Ett annat exempel skulle vara DLNA -tjänsten mediatomb.
Detta är en liten server som tillhandahåller video/ljudinnehåll till DLNA -klienter och sänder sig själv i nätverket. Ibland hänger tjänsten och den kan inte upptäckas längre, men processen kommer fortfarande att vara aktiv. För att kontrollera om tjänsten kan upptäckas användes CLI-verktyget gssdp-discover. Hela koden som kontrollerar DLNA -servern placerades i ett mediatomb.check -skript.
Detta är bara några exempel på hur du kan använda.serv- och.check -filerna.
För att övervaka en ny tjänst måste du skapa en.serv och, om det behövs också en kontrollfil, och skriva motsvarande skript inuti dem.
Om det bara är tillräckligt med kontroll av processens närvaro, räcker det med en tom.serv -fil. Om ytterligare kontroller måste utföras måste en.check -fil skapas och ett litet skript måste skrivas för att göra jobbet.
Självklart måste.sh -skriptet köras regelbundet, därför måste ett cron -jobb också skapas för det:
#check kör tjänster var 5: e minut */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null
Steg 3: Sista tankarna
Jag hoppas att du kommer att hitta det här paketet användbart eftersom det i hög grad kan övervaka Linux -processer och förhoppningsvis kommer att minimera stilleståndstiden för dina tjänster.
Ladda upp ytterligare skript till github om du skapar nya. Låt mig bara veta så lägger jag till dig som bidragsgivare.
Rekommenderad:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Hur man skapar en 2d -karaktär med teckenkontroller i Unreal Engine 4 Använda Visual Script för PC: 11 steg
Hur man skapar en 2d -tecken med teckenkontroller i Unreal Engine 4 Använda Visual Script för PC: Hur man skapar en 2d -tecken med teckenkontroll i Unreal engine 4 med visuellt skript för PC Hej, jag är Jordan Steltz. Jag har utvecklat videospel sedan jag var 15. Denna handledning lär dig hur du skapar en grundläggande karaktär med in
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva
Konfigurera för att programmera ett Picaxe Via Shell Script (linux): 5 steg
Konfigurera för att programmera en Picaxe Via Shell Script (linux): Enkel genomgång som visar hur man gör ett skalskript som kommer att ladda ner ett program från en ftp -webbplats och sedan kompilera det och sedan ladda ner det till picaxen. (Detta är också mitt första instruerbar)