acct(5) File Formats Manual acct(5) BEZEICHNUNG acct - Datei zur Prozessabrechnung UBERSICHT #include BESCHREIBUNG Wenn der Kernel mit aktivierter Prozessabrechnungsoption (CONFIG_BSD_PROCESS_ACCT) gebaut wird, startet der Aufruf von acct(2) die Prozessabrechnung. Ein Beispiel: acct("/var/log/pacct"); Wenn die Prozessabrechnung aktiviert ist, schreibt der Kernel einen Datensatz in die Abrechnungsdatei, wenn ein Prozess im System endet. Dieser Datensatz enthalt Informationen uber den beendeten Prozess. Der Datensatz ist in wie folgt definiert: #define ACCT_COMM 16 typedef u_int16_t comp_t; struct acct { char ac_flag; /* Schalter zur Steuerung der Abrechnung */ u_int16_t ac_uid; /* Benutzerkennung fur Abrechnung */ u_int16_t ac_gid; /* Gruppenkennung fur Abrechnung */ u_int16_t ac_tty; /* steuerndes Terminal */ u_int32_t ac_btime; /* Zeit der Erstellung des Prozesses (Sekunden seit dem 1.1.1970, 0:00 Uhr) */ comp_t ac_utime; /* CPU-Zeit Benutzer */ comp_t ac_stime; /* CPU-Zeit System */ comp_t ac_etime; /* verstrichene Zeit*/ comp_t ac_mem; /* durchschnittliche Speichernutzung (kB) */ comp_t ac_io; /* ubertragene Zeichen (nicht verwendet) */ comp_t ac_rw; /* gelesene oder geschriebene Blocke (nicht verwendet) */ comp_t ac_minflt; /* geringfugige Seitenausnahmebehandlung */ comp_t ac_majflt; /* wesentliche Seitenausnahmebehandlung */ comp_t ac_swaps; /* Anzahl der Seitenauslagerungen (nicht verwendet) */ u_int32_t ac_exitcode; /* Status bei Prozessende (siehe wait(2)) */ char ac_comm[ACCT_COMM+1]; /* Befehlsname (Name ohne Pfad des letzten ausgefuhrten Befehls; mit Nullbyte abgeschlossen) */ char ac_pad[X];/* Bytes zur Auffullung */ }; enum { /* Bits, die im Feld ac_flag gesetzt werden konnen */ AFORK = 0x01, /* hat fork ausgefuhrt, aber nicht exec */ ASU = 0x02, /* hat Privilegien des Superusers genutzt */ ACORE = 0x08, /* hat Speicherauszug (core dump) erstellt */ AXSIG = 0x10 /* durch ein Signal abgebrochen */ }; Der Datentyp comp_t ist ein Fliesskommawert, der aus einer 13-Bit-Mantisse und einem 3-Bit-Exponenten zur Basis besteht. Ein Wert c dieses Datentyps kann wie folgt in einen (long) integer umgewandelt werden: v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3); Die Felder ac_utime, ac_stime und ac_etime messen die Zeit in Takten (>>clock ticks<<); teilen Sie diese Werte durch sysconf(_SC_CLK_TCK), um die Zeit in Sekunden zu ermitteln. Version 3 des Abrechnungsdateiformats Seit Linux 2.6.8 kann optional eine alternative Version der Abrechnungsdatei erzeugt werden, wenn beim Bau des Kernels die Option CONFIG_BSD_PROCESS_ACCT_V3 aktiv war. Ist diese Option gewahlt, enthalten die in die Abrechnungsdatei geschriebenen Datensatze zusatzliche Felder; die Weite der Felder c_uid und ac_gid steigt (entsprechend der Vergrosserung der UIDs und GIDs seit Linux 2.4) von 16 auf 32 Bit. Die Datensatze sind wie folgt definiert: struct acct_v3 { char ac_flag; /* Schalter */ char ac_version; /* immer auf ACCT_VERSION (3) gesetzt u_int16_t ac_tty; /* steuerndes Terminal */ u_int32_t ac_exitcode; /* Status bei Prozessende */ u_int32_t ac_uid; /* Reale Benutzerkennung */ u_int32_t ac_gid; /* Reale Gruppenkennung */ u_int32_t ac_pid; /* Prozesskennung */ u_int32_t ac_ppid; /* Kennung des Elternprozesses */ u_int32_t ac_btime; /* Zeitpunkt der Prozesserzeugung */ float ac_etime; /* verstrichene Zeit*/ comp_t ac_utime; /* CPU-Zeit Benutzer */ comp_t ac_stime; /* CPU-Zeit System */ comp_t ac_mem; /* durchschnittliche Speichernutzung (kB) */ comp_t ac_io; /* ubertragene Zeichen (nicht verwendet) */ comp_t ac_rw; /* gelesene oder geschriebene Blocke (nicht verwendet) */ comp_t ac_minflt; /* geringfugige Seitenausnahmebehandlung */ comp_t ac_majflt; /* wesentliche Seitenausnahmebehandlung */ comp_t ac_swaps; /* Anzahl der Seitenauslagerungen (nicht verwendet) */ char ac_comm[ACCT_COMM];/* Befehlsname */ }; VERSIONEN Obwohl sie auf den meisten Systemen prasent ist, ist sie nicht standardisiert. Die Einzelheiten variieren etwas zwischen den den Systemen. STANDARDS Keine. GESCHICHTE Glibc 2.6. Die Prozessabrechnung entstand auf BSD. ANMERKUNGEN Die Datensatze in der Abrechnungsdatei sind nach der Endzeit der Prozesse geordnet. In Linux bis einschliesslich 2.6.9 wird fur jeden mit der NTPL-Threading-Bibliothek erzeugten Thread ein eigener Datensatz geschrieben; seit Linux 2.6.10 wird fur den gesamten Prozess ein einzelner Datensatz geschrieben, nachdem der letzte Prozess endete. Die Datei /proc/sys/kernel/acct definiert Parameter, die das Verhalten der Prozessabrechnung steuern, wenn der verfugbare Plattenplatz knapp wird. Diese Parameter werden in proc(5) beschrieben. SIEHE AUCH lastcomm(1), acct(2), accton(8), sa(8) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 acct(5)