System Tryk | |
---|---|
Type | sporing |
Udvikler | fællesskab |
Skrevet i | C++ , brugerscripts |
Operativ system | linux |
Første udgave | 2005 |
Hardware platform | linux |
nyeste version | 3.3 [1] (8. juni 2018) |
Licens | GNU General Public License |
Internet side | sourceware.org/systemtap/ |
SystemTap er et værktøj, der giver dig mulighed for at indsamle og analysere information om et kørende Linux -system.
I modsætning til indbyggede værktøjer som netstat , ps , top , er SystemTap designet til at give flere muligheder for at indsamle og præsentere information.
SystemTap er en kommandolinjegrænseflade og et scriptsprog .
Systemadministratorer kan bruge SystemTap til at overvåge og analysere systemets ydeevne, og softwareudviklere kan bruge SystemTap til at analysere applikationsadfærd på et kørende system.
Virksomheder som Red Hat , IBM , Oracle Corporation , Hitachi er involveret i udviklingen af SystemTap-projektet . [2]
Hovedideen med SystemTap er at mærke hændelser og tildele handlere til dem.
Under udførelsen af scriptet overvåger SystemTap hændelser, og så snart en hændelse indtræffer, vil systemkernen udføre handleren.
Hændelser kan være begyndelsen eller slutningen af en SystemTap-session, en timerudløb og andre.
En handler er en sekvens af script-sætninger, der vil blive eksekveret efter hændelsen udløses. Typisk henter handlere information fra begivenhedskonteksten eller viser information på skærmen.
SystemTap-sessionen starter, når vi udfører scriptet. På dette tidspunkt sker følgende rækkefølge af handlinger:
Synkrone hændelser er knyttet til en instruktion på et bestemt sted i kernekoden.
Eksempler på synkrone hændelser:
Asynkrone hændelser er ikke bundet til en specifik instruktion eller en specifik placering i kernekoden.
Eksempler på asynkrone hændelser:
Hændelseshandleren er omgivet af krøllede klammeparenteser ({}).
Til output til skærmen bruges formatfunktionen printf ("formatstreng\n", argumenter), som ligner den tilsvarende funktion i C .
Nogle SystemTap-funktioner til brug med printf():
Manuskript:
probe syscall.open { printf ("%s(%d) åben\n", execname(), pid()) }Resultat:
vmware-guestd(2206) åben hald(2360) åben hald(2360) åben hald(2360) åben df(3433) åben df(3433) åben df(3433) åben hald(2360) åben