Hoewel Linux zeer betrouwbaar is, zouden verstandige systeembeheerders een manier moeten vinden om het gedrag en het gebruik van het systeem te allen tijde in de gaten te houden. Zorgen voor een uptime zo dicht bij 100% mogelijk en de beschikbaarheid van middelen zijn in veel omgevingen van cruciaal belang. Door het verleden en de huidige status van het systeem te onderzoeken, kunnen we mogelijke problemen voorzien en hoogstwaarschijnlijk voorkomen.
Introductie van het Linux Foundation-certificeringsprogramma
In dit artikel zullen we een lijst presenteren van enkele tools die beschikbaar zijn in de meeste upstream-distributies om de systeemstatus te controleren, storingen te analyseren en lopende problemen op te lossen. Specifiek, van de talloze beschikbare gegevens, zullen we ons concentreren op CPU, opslagruimte en geheugengebruik, basisprocesbeheer en loganalyse.
Er zijn 2 bekende commando's in Linux die worden gebruikt om het gebruik van opslagruimte te inspecteren: df en du.
De eerste, df (wat staat voor schijfvrij), wordt meestal gebruikt om het totale schijfruimtegebruik per bestandssysteem te rapporteren.
Zonder opties, df rapporteert schijfruimtegebruik in bytes. Met de -H vlag, zal in plaats daarvan dezelfde informatie worden weergegeven met MB of GB. Merk op dat dit rapport ook de totale grootte van elk bestandssysteem (in blokken van 1 K), de vrije en beschikbare ruimtes en het koppelpunt van elk opslagapparaat bevat.
#df. # df-h.
Dat is zeker leuk - maar er is nog een beperking die een bestandssysteem onbruikbaar kan maken, en dat is bijna geen inodes meer. Alle bestanden in een bestandssysteem worden toegewezen aan een inode die zijn metadata bevat.
# df-hTi.
u kunt de hoeveelheid gebruikte en beschikbare inodes zien:
Volgens de bovenstaande afbeelding zijn er: 146 gebruikte inodes (1%) in /home, wat betekent dat je nog steeds 226K bestanden in dat bestandssysteem kunt maken.
Houd er rekening mee dat u onvoldoende opslagruimte kunt hebben lang voordat de inodes opraken, en omgekeerd. Om die reden moet u niet alleen het gebruik van de opslagruimte controleren, maar ook het aantal inodes dat door het bestandssysteem wordt gebruikt.
Gebruik de volgende opdrachten om lege bestanden of mappen (die 0B innemen) te vinden die zonder reden inodes gebruiken:
# zoek /home -type f -leeg. # zoek /home -type d -leeg.
U kunt ook de -verwijderen markeer aan het einde van elke opdracht als u ook die lege bestanden en mappen wilt verwijderen:
# find /home -type f -empty --delete. # zoek /home -type f -leeg.
De vorige procedure heeft 4 bestanden verwijderd. Laten we het aantal gebruikte / beschikbare nodes nogmaals controleren in /home:
# df -hTi | gr naar huis.
Zoals je kunt zien, zijn er 142 gebruikte inodes nu (4 minder dan voorheen).
Als het gebruik van een bepaald bestandssysteem boven een vooraf bepaald percentage ligt, kunt u gebruik maken van du (afkorting van schijfgebruik) om erachter te komen welke bestanden de meeste ruimte innemen.
Het voorbeeld wordt gegeven voor /var, die zoals je kunt zien in de eerste afbeelding hierboven, wordt gebruikt voor 67%.
# du -sch /var/*
Opmerking: Dat u kunt overschakelen naar een van de bovenstaande submappen om erachter te komen wat er precies in staat en hoeveel elk item in beslag neemt. U kunt die informatie vervolgens gebruiken om enkele bestanden te verwijderen als die niet nodig zijn, of om de grootte van het logische volume indien nodig uit te breiden.
Lees ook
De klassieke tool in Linux die wordt gebruikt om een algehele controle uit te voeren van CPU-/geheugengebruik en procesbeheer is: top commando. Bovendien geeft top een realtime beeld van een draaiend systeem weer. Er zijn andere hulpmiddelen die voor hetzelfde doel kunnen worden gebruikt, zoals: htop, maar ik heb genoegen genomen met top omdat het out-of-the-box is geïnstalleerd in elke Linux-distributie.
Om bovenaan te beginnen, typt u eenvoudig de volgende opdracht in uw opdrachtregel en drukt u op Enter.
# bovenkant.
Laten we eens kijken naar een typische topoutput:
In rijen 1 tot en met 5 wordt de volgende informatie weergegeven:
1. De huidige tijd (8:41:32 pm) en uptime (7 uur en 41 minuten). Er is slechts één gebruiker aangemeld bij het systeem, en het belastingsgemiddelde van respectievelijk de laatste 1, 5 en 15 minuten. 0,00, 0,01 en 0,05 geven aan dat gedurende die tijdsintervallen het systeem 0% van de tijd niet actief was (0,00: er waren geen processen wachtend op de CPU), werd het vervolgens overbelast met 1% (0,01: gemiddeld 0,01 processen wachtten op de CPU) en 5% (0.05). Indien kleiner dan 0 en hoe kleiner het getal (bijvoorbeeld 0,65), was het systeem de afgelopen 1, 5 of 15 minuten voor 35% inactief, afhankelijk van waar 0,65 wordt weergegeven.
2. Momenteel zijn er 121 processen actief (u kunt de volledige lijst bekijken in 6). Slechts 1 ervan is actief (in dit geval bovenaan, zoals je kunt zien in de %CPU-kolom) en de overige 120 wachten op de achtergrond maar "slapen" en zullen in die staat blijven totdat we ze oproepen. Hoe? U kunt dit verifiëren door een mysql-prompt te openen en een aantal query's uit te voeren. U zult merken hoe het aantal lopende processen toeneemt.
Als alternatief kunt u een webbrowser openen en naar een bepaalde pagina navigeren die door Apache wordt bediend en u krijgt hetzelfde resultaat. Natuurlijk gaan deze voorbeelden ervan uit dat beide services op uw server zijn geïnstalleerd.
3. us (tijd lopende gebruikersprocessen met ongewijzigde prioriteit), sy (tijd lopende kernelprocessen), ni (tijd lopende gebruikersprocessen met gewijzigde prioriteit), wa (tijd wachtend op I/O voltooiing), hi (tijd besteed aan onderhoud van hardware-interrupts), si (tijd besteed aan onderhoud aan software-interrupts), st (tijd gestolen van de huidige vm door de hypervisor – alleen in gevirtualiseerde omgevingen).
4. Fysiek geheugengebruik.
5. Ruimtegebruik omwisselen.
Om RAM-geheugen te inspecteren en gebruik te wisselen, kunt u ook gebruik maken van vrij opdracht.
# vrij.
Je kunt natuurlijk ook de -m (MB) of -G (GB) schakelt over om dezelfde informatie in voor mensen leesbare vorm weer te geven:
# gratis -m.
Hoe dan ook, je moet je bewust zijn van het feit dat de kernel zoveel mogelijk geheugen reserveert en het beschikbaar stelt aan processen wanneer ze erom vragen. Vooral de “-/+ buffers/cache”-regel toont de werkelijke waarden nadat deze I/O-cache in aanmerking is genomen.
Met andere woorden, de hoeveelheid geheugen die door processen wordt gebruikt en de hoeveelheid die beschikbaar is voor andere processen (in dit geval 232 MB gebruikt en 270 MB beschikbaar, respectievelijk). Wanneer processen dit geheugen nodig hebben, zal de kernel automatisch de grootte van de I/O-cache verkleinen.
Lees ook: 10 Handige "gratis" opdracht om het Linux-geheugengebruik te controleren
Op elk willekeurig moment draaien er veel processen op ons Linux-systeem. Er zijn twee tools die we zullen gebruiken om processen nauwlettend te volgen: ps en pstree.
De... gebruiken -e en -F opties gecombineerd tot één (-ef) kunt u een lijst maken van alle processen die momenteel op uw systeem worden uitgevoerd. U kunt deze uitvoer naar andere tools doorsluizen, zoals: grep (zoals uitgelegd in Deel 1 van de LFCS-serie) om de uitvoer te verfijnen tot uw gewenste proces(sen):
# ps -ef | grep -i inktvis | grep -v grep.
De bovenstaande proceslijst toont de volgende informatie:
eigenaar van het proces, PID, Parent PID (het bovenliggende proces), processorgebruik, tijdstip waarop de opdracht is gestart, tty (de? geeft aan dat het een daemon is), de gecumuleerde CPU-tijd en de opdracht die aan het proces is gekoppeld.
Misschien hebt u echter niet al die informatie nodig en wilt u de eigenaar van het proces, de opdracht waarmee het is gestart, de PID en PPID laten zien, en het percentage geheugen dat het momenteel gebruikt - in die volgorde, en sorteer op geheugengebruik in aflopende volgorde (merk op dat ps standaard is gesorteerd op PID).
# ps -eo gebruiker, comm, pid, ppid,%mem --sort -%mem.
Waar het minteken voor %mem het sorteren in aflopende volgorde aangeeft.
Als om de een of andere reden een proces te veel systeembronnen in beslag neemt en het de algehele situatie in gevaar brengt? functionaliteit van het systeem, wilt u de uitvoering stoppen of pauzeren door een van de volgende signalen door te geven met: de doden programma eraan. Andere redenen waarom u zou overwegen dit te doen, zijn wanneer u een proces op de voorgrond hebt gestart, maar het wilt pauzeren en op de achtergrond wilt hervatten.
Signaalnaam: | Signaal nummer: | Beschrijving |
SIGTERM | 15 | Dood het proces gracieus. |
SIGINT | 2 | Dit is het signaal dat wordt verzonden wanneer we op Ctrl + C drukken. Het is bedoeld om het proces te onderbreken, maar het proces kan het negeren. |
SIGKILL | 9 | Dit signaal onderbreekt ook het proces, maar het doet dit onvoorwaardelijk (voorzichtig gebruiken!) omdat een proces het niet kan negeren. |
SIGHUP | 1 | Afkorting van "Hang UP", dit geeft de daemons de opdracht om het configuratiebestand opnieuw te lezen zonder het proces daadwerkelijk te stoppen. |
SIGTSTP | 20 | Pauzeer de uitvoering en wacht klaar om door te gaan. Dit is het signaal dat wordt verzonden wanneer we de toetsencombinatie Ctrl + Z typen. |
SIGSTOP | 19 | Het proces wordt onderbroken en krijgt geen aandacht meer van de CPU-cycli totdat het opnieuw wordt gestart. |
SIGCONT | 18 | Dit signaal vertelt het proces om de uitvoering te hervatten nadat het SIGTSTP of SIGSTOP heeft ontvangen. Dit is het signaal dat door de shell wordt verzonden wanneer we de fg- of bg-opdrachten gebruiken. |
Wanneer de normale uitvoering van een bepaald proces impliceert dat er geen uitvoer naar het scherm wordt gestuurd terwijl het is actief is, wilt u het misschien op de achtergrond starten (met een ampersand aan het einde van de opdracht).
proces naam &
of,
Zodra het op de voorgrond is gestart, pauzeer je het en stuur je het naar de achtergrond met
Ctrl+Z.
# kill -18 PID.
Houd er rekening mee dat elke distributie tools biedt om gemeenschappelijke services op een elegante manier te stoppen / starten / herstarten / opnieuw te laden, zoals: dienst in op SysV gebaseerde systemen of systeemctl in systeemgebaseerde systemen.
Als een proces niet op die hulpprogramma's reageert, kunt u het met geweld uitschakelen door het het SIGKILL-signaal ernaar toe te sturen.
# ps -ef | grep apache. # doden -9 3821.
Wanneer er een storing in het systeem is geweest (of het nu een stroomstoring, een hardwarestoring, een geplande of ongeplande procesonderbreking of een afwijking is), logt de /var/log zijn je beste vrienden om te bepalen wat er is gebeurd of wat de problemen zou kunnen veroorzaken waarmee je wordt geconfronteerd.
# cd /var/log.
Enkele van de items in /var/log zijn gewone tekstbestanden, andere zijn mappen en weer andere zijn gecomprimeerde bestanden van geroteerde (historische) logs. U zult die met het woord fout in hun naam willen controleren, maar het inspecteren van de rest kan ook van pas komen.
Stel je dit scenario voor. Uw LAN-clients kunnen niet afdrukken naar netwerkprinters. De eerste stap om deze situatie op te lossen is: /var/log/cups map en kijk wat er in staat.
U kunt de staart commando om de laatste 10 regels van het error_log-bestand weer te geven, of staart -f error_log voor een realtime weergave van het logboek.
# cd /var/log/cups. # ls. # staart error_log.
De bovenstaande schermafbeelding biedt nuttige informatie om te begrijpen wat uw probleem zou kunnen veroorzaken. Houd er rekening mee dat het volgen van de stappen of het corrigeren van de storing van het proces het algehele probleem mogelijk nog steeds niet oplossen, maar als u eraan gewend raakt vanaf het begin om de logboeken te controleren telkens wanneer zich een probleem voordoet (of het nu een lokaal of een netwerkprobleem is), u zult zeker aan de goede kant zijn spoor.
Hoewel het moeilijk kan zijn om hardwarestoringen op te lossen, moet u de: dmesg en berichtenlogboeken en grep voor gerelateerde woorden aan een hardware-onderdeel waarvan wordt aangenomen dat het defect is.
Onderstaande afbeelding is afkomstig van /var/log/messages na het zoeken naar het woord fout met behulp van de volgende opdracht:
# minder /var/log/berichten | grep -i fout.
We kunnen zien dat we een probleem hebben met twee opslagapparaten: /dev/sdb en /dev/sdc, die op hun beurt een probleem met de RAID-array veroorzaken.
In dit artikel hebben we enkele hulpmiddelen onderzocht die u kunnen helpen om altijd op de hoogte te zijn van de algehele status van uw systeem. Bovendien moet u ervoor zorgen dat uw besturingssysteem en geïnstalleerde pakketten zijn bijgewerkt naar hun nieuwste stabiele versies. En vergeet nooit, maar dan ook nooit de logs te controleren! Dan wordt u in de goede richting geleid om de definitieve oplossing voor eventuele problemen te vinden.
Voel je vrij om je opmerkingen, suggesties of vragen - als je die hebt - achter te laten via het onderstaande formulier.