Solaris - truss - count und Details

Dieses Thema im Forum "Unix Derivate & sonst. Unix Fragen" wurde erstellt von opeschka, 08.05.2008.

  1. #1 opeschka, 08.05.2008
    opeschka

    opeschka Grünschnabel

    Dabei seit:
    06.04.2008
    Beiträge:
    5
    Zustimmungen:
    0
    Hi,

    gibt es eine Einstellung zu "truss" mit dem man sowohl die Statistik (truss -c) bekommt als auch die Details (truss -f) ?

    Folgendes:
    Code:
    truss -cf -o truss.logs/ope.truss.080508.log <Kommando>
    liefert nur die Statistik.

    Folgendes:
    Code:
    truss -f -o truss.logs/ope.truss.080508.log <Kommando>
    liefert zwar alle Details, aber keine Statistik.

    Ich hätte gerne beides :)

    In der man-page habe ich nichts gefunden.

    Ich wollte von folgender Alternative absehen:
    nach dem Aufruf die log-Datei selbst auswerten und eben selbst eine eigene Statistik erstellen.

    Achso:
    ich arbeite derzeit unter Solaris 9 mit der bash.
    Schonmal vielen Dank für Tipps.

    Grüße,
    0li
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 08.05.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Spricht was dagegen mit einem kleinen shell-script und awk, sed und co die Ausgaben beider Kommandos zu verwursteln?

    Poste doch mal zwei Beispiel-Ausgaben und wie du dir das "kombiniert" vorstellst.
     
  4. #3 opeschka, 08.05.2008
    opeschka

    opeschka Grünschnabel

    Dabei seit:
    06.04.2008
    Beiträge:
    5
    Zustimmungen:
    0
    Hi,

    also "truss -c" liefert folgendes (Ausschnitt) :
    Code:
    syscall               seconds   calls  errors
    _exit                    .000       7
    fork                     .000       3
    read                    2.818  118180
    write                   1.895   51167
    open                     .243   13813      4
    close                    .090   13843
    unlink                   .000       3
    time                     .000      14
    brk                      .015     746
    stat                     .122    2365   2136
    lseek                    .156   26234
                         --------  ------   ----
    sys totals:             6.847  335846  15238
    usr time:             341.591
    elapsed:              402.170
    

    und "truss -f" liefert folgendes (Ausschnitt):
    Code:
    20094:  stat("/usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.2", 0xFFBFC180) = 0
    20094:  resolvepath("/usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.2", "/usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.2", 1023) = 52
    20094:  open("/usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.2", O_RDONLY) = 3
    20094:  mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFD9E0000
    20094:  mmap(0x00010000, 90112, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFD890000
    20094:  mmap(0xFD890000, 14830, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFD890000
    20094:  mmap(0xFD8A2000, 8822, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 8192) = 0xFD8A2000
    20094:  munmap(0xFD894000, 57344)                       = 0
    20094:  mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFD9D0000
    20094:  memcntl(0xFD890000, 6840, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
    20094:  close(3)                                        = 0
    Und ich hätte halt jetzt gerne, dass truss beides in meine Ausgabe-Datei schreibt.

    Klar ein kleines awk-sort-Skriptchen würde auch gehen, wenn truss das allerdings schon kann, wäre das mehr Aufwand.
     
  5. #4 opeschka, 14.05.2008
    opeschka

    opeschka Grünschnabel

    Dabei seit:
    06.04.2008
    Beiträge:
    5
    Zustimmungen:
    0
    AWK - Skript

    Hi alle,

    für alle die es interessiert, bzw. auch sowas brauchen...

    Ich hätte mir dann ein kleines awk-Skript geschrieben zum truss aufbereiten.

    Hier das Skript.
    Sicherlich verschönerbar, aber es funktioniert:
    Code:
    BEGIN   {
                    FS="	"
            }
            {
                    ZEIT=$2
                    FUNKTION=substr($3,1,index($3,"(")-1)
            }
    FUNKTION == "resolvepath"       {       ZEITresolvepath = ZEITresolvepath       + ZEIT; ANZAHLresolvepat = ANZAHLresolvepat  + 1; FUNKTION = "" }
    FUNKTION == "stat"              {       ZEITstat        = ZEITstat              + ZEIT; ANZAHLstat       = ANZAHLstat        + 1; FUNKTION = "" }
    FUNKTION == "fstat"             {       ZEITfstat       = ZEITfstat             + ZEIT; ANZAHLfstat      = ANZAHLfstat       + 1; FUNKTION = "" }
    FUNKTION == "fstat64"           {       ZEITfstat64     = ZEITfstat64           + ZEIT; ANZAHLfstat64    = ANZAHLfstat64     + 1; FUNKTION = "" }
    FUNKTION == "write"             {       ZEITwrite       = ZEITwrite             + ZEIT; ANZAHLwrite      = ANZAHLwrite       + 1; FUNKTION = "" }
    FUNKTION == "read"              {       ZEITread        = ZEITread              + ZEIT; ANZAHLread       = ANZAHLread        + 1; FUNKTION = "" }
    FUNKTION == "fork"              {       ZEITfork        = ZEITfork              + ZEIT; ANZAHLfork       = ANZAHLfork        + 1; FUNKTION = "" }
    # FUNKTION != ""                  {       print ("Noch unbekannte Funktion: >" FUNKTION "<");    }
    END     {
                    printf ("Prozess        %10s %6s\n", "Zeit", "Anzahl")
                    printf ("resolvepath    %10s %6s\n", ZEITresolvepath    , ANZAHLresolvepat )
                    printf ("stat           %10s %6s\n", ZEITstat           , ANZAHLstat       )
                    printf ("fstat          %10s %6s\n", ZEITfstat          , ANZAHLfstat      )
                    printf ("fstat64        %10s %6s\n", ZEITfstat64        , ANZAHLfstat64    )
                    printf ("write          %10s %6s\n", ZEITwrite          , ANZAHLwrite      )
                    printf ("read           %10s %6s\n", ZEITread           , ANZAHLread       )
                    printf ("fork           %10s %6s\n", ZEITfork           , ANZAHLfork       )
            }
    
    wird die auskommentierte Zeile aktiviert, erhält man alle noch fehlenden Befehle, die protokolliert werden würden.
    Das Skript kann dann mit diesen Werten erweitert werden.

    Viel Spass damit :)


    Edit:
    achso. Das Skript bereitet die Ausgabe von
    Code:
    truss -Df 
    auf
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Solaris - truss - count und Details

Die Seite wird geladen...

Solaris - truss - count und Details - Ähnliche Themen

  1. Solaris Login mit Active Directory User

    Solaris Login mit Active Directory User: Hallo zusammen, Ich arbeite daran unsere Solaris Systeme ans AD anzubinden. Teilweise ist mir das schon gelungen, teilweise stehe ich aber auch...
  2. Kleine Frage (Solaris ein Cloud Betriebsystem?)

    Kleine Frage (Solaris ein Cloud Betriebsystem?): ′
  3. NVIDIA Downgrade auf Legacy unter Solaris 11

    NVIDIA Downgrade auf Legacy unter Solaris 11: Hallo, ich habe ein Notebook mit einer 310 M von Nvidia. Solaris wurde frisch installiert. Es nimmt aber den aktuellen Treiber und das System...
  4. Solaris 8 ( unsupported) VmwareTools

    Solaris 8 ( unsupported) VmwareTools: Moin Community, ich habe Solaris 8 ( unsupported) in einer Vmware Workstation ( erst 10 jetzt 11) installiert. So weit so gut, wollte jetzt das...
  5. NVIDIA und Solaris

    NVIDIA und Solaris: Hallo! Nach tagelangem Herumärgern mit Debian, Ubuntu und OpenSuse (Netzwerk funktioniert irgendwie nicht) habe ich es einmal mit Solaris...