Als we onder onze verantwoordelijkheid machines hebben met Linux-besturingssystemen, is een van de handigste en meest praktische manieren om elk aspect hiervan correct te beheren, het kennen van de verschillende hulpprogramma's en commando's die bestaan om ze te implementeren en te ondersteunen.
Deze keer zal Solvetic het hebben over een opdrachtregelprogramma genaamd strace en we zullen zien hoe dit praktisch kan worden voor het beheer van het besturingssysteem.
Wat is strace?strace is een handig opdrachtregelprogramma voor het diagnosticeren, instrueren en uitvoeren van foutopsporingstaken. Systeembeheerders vinden strace een praktisch hulpmiddel om problemen op te lossen met programma's waarvan de bron niet beschikbaar is, omdat ze niet opnieuw gecompileerd hoeven te worden om ze te traceren.
De strace-tool vangt en registreert alle systeemaanroepen die door een proces worden gedaan en de signalen die door het proces worden ontvangen. het zal mogelijk zijn om het om te leiden naar een bestand.
1. Strace installatie
Om strace te installeren, moeten we een van de volgende opdrachten uitvoeren:
sudo apt install strace (Debian of Ubuntu) yum install strace (RedHat of CentOS) dnf install strace (Fedora)In het geval dat een programma crasht of zich op een onverwachte manier gedraagt, is het mogelijk om toegang te krijgen tot de systeemaanroepen om een idee te krijgen van wat er precies is gebeurd tijdens de uitvoering ervan.
Systeemaanroepen kunnen worden onderverdeeld in verschillende gebeurtenissen: die met betrekking tot procesbeheer, die met een bestand als argument, die met netwerken, geheugentoewijzing, signalen, IPC en ook systeemaanroepen met betrekking tot bestandsdescriptors.
2. Procesproblemen in Linux oplossen met strace-opdrachten
Vervolgens gaan we verschillende strace-opdrachten zien om de verschillende procesproblemen op te lossen die zich in Linux kunnen voordoen.
Traceer systeemoproepen met straceMet deze optie kunnen we alle systeemaanroepen van het df-commando volgen, hiervoor voeren we het volgende uit:
strace df -h
In deze uitvoer kunnen we verschillende soorten systeemaanroepen zien die worden gedaan door het df-commando, een daarvan is bijvoorbeeld:
open ("/ etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3Waar:
- Open: het is het type systeemoproep
- Het is het argument van de systeemaanroep: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
- 3: Het is de retourwaarde van de systeemaanroep
Traceer Linux PID-processenAls er al een proces op het systeem draait, is het als volgt mogelijk om het via zijn PID te traceren:
sudo strace -c -p 465Dit zal het scherm vullen met de continue uitvoer die laat zien dat de systeemaanroepen worden gedaan door het proces, om te voltooien, zullen we op de Ctrl + C-toetsen drukken.
Krijg de samenvatting van een Linux-procesDoor de parameter -c te gebruiken, is het mogelijk om voor elke systeemaanroep een rapport te genereren van de totale tijd, oproepen en fouten, hiervoor zullen we de volgende syntaxis uitvoeren:
sudo strace -c -p (PID)
Instructiewijzer afdrukken tijdens systeemoproep. De optie -i geeft de instructieaanwijzer weer op het moment van elke systeemaanroep die door het programma wordt gedaan.
sudo strace -i df -h
Toon de tijd van de dag voor elke traceeruitvoerlijnMet strace is het mogelijk om de tijd van de dag voor elke regel in de trace-uitvoer af te drukken, met behulp van de vlag -t:
sudo strace -t df -h
Geef de afdruktijd weer die is besteed aan systeemoproepenOm het tijdsverschil tussen het begin en het einde van elke systeemaanroep door een programma weer te geven, moeten we de optie -T gebruiken:
sudo strace -T df -h
Specifieke oproepen tracerenDe opdracht trace = schrijven staat bekend als een gekwalificeerde expressie, waarbij trace een kwalificatie is (andere omvatten signaal, afkorting, breedsprakig, onbewerkt, lezen of schrijven). In dit geval typt u de waarde van de kwalificatie. De volgende opdracht geeft in realtime de systeemaanroepen weer om de df-uitvoer af te drukken naar standaarduitvoer:
sudo strace -e trace = schrijf df -h
Enkele aanvullende commando's die we kunnen gebruiken zijn:
sudo strace -e trace = openen, sluiten df -hsudo strace -e trace = openen, sluiten, lezen, schrijven df -hsudo strace -e trace = alle df -h
Systeemaanroepen plotten op basis van een voorwaardeDit commando kan worden gebruikt om alle systeemaanroepen te traceren die betrekking hebben op procesbeheer, we zullen het volgende uitvoeren:
sudo strace -q -e trace = proces df -h
Om nu alle systeemaanroepen te traceren die een bestandsnaam als argument hebben, voeren we de volgende opdracht uit:
sudo strace -q -e trace = bestand df -h
Om alle systeemaanroepen te traceren waarbij geheugentoewijzing is betrokken, voeren we de volgende regel uit:
sudo strace -q -e trace = geheugen df -h
Traceer omleiden naar uitvoerbestandAls we de vervolgberichten die naar een standaardfout zijn verzonden, naar een bestand willen schrijven, gebruiken we de optie -o. Dit betekent dat alleen de uitvoer van de opdracht als volgt op het scherm wordt afgedrukt:
sudo strace -o df_debug.txt df -h
We kunnen dit bestand visualiseren door de regel uit te voeren:
kat df_debug.txt
Strace-foutopsporingsuitvoer implementerenAls we de foutopsporingsinformatie voor de strace-tool willen weergeven, moeten we de vlag -d gebruiken:
strace -d df -h
Strace hulpOm de hulp van het strace-commando weer te geven, zullen we de volgende regel uitvoeren:
man strop
Dit is hoe we hebben gezien hoe strace nog een hulpmiddel wordt voor beheertaken in Linux-distributies.