ACCT(5) | Manual del Programador de Linux | ACCT(5) |
acct - Archivo para la contabilidad de procesos
#include <sys/acct.h>
Si el núcleo fue compilado con la opción CONFIG_BSD_PROCESS_ACCT activada, se podrá iniciar la contabilidad de procesos mediante la llamada acct(2). Por ejemplo:
acct("/var/log/pacct");
Cuando la contabilidad está activada, el núcleo anota un registro en el archivo cada vez que un proceso termina. Dicho registro contiene información acerca del proceso y su estructura se define en <sys/acct.h> del siguiente modo:
#define ACCT_COMM 16 typedef u_int16_t comp_t; struct acct {
char ac_flag; /* Opciones de la contabilidad */
u_int16_t ac_uid; /* ID del usuario*/
u_int16_t ac_gid; /* ID del grupo*/
u_int16_t ac_tty; /* Terminal que lo gestiona */
u_int32_t ac_btime; /* Hora de creación del proces
(segundos desde el inicio) */
comp_t ac_utime; /* Tiempo de CPU usado por el usuario*/
comp_t ac_stime; /* Tiempo de CPU usado por el sistema */
comp_t ac_etime; /* Tiempo transcurrido */
comp_t ac_mem; /* Media del uso de memoria (kB) */
comp_t ac_io; /* Caracteres transferidos (no usado) */
comp_t ac_rw; /* Bloques leidos o escritos (no usado) */
comp_t ac_minflt; /* Errores leves de paginación */
comp_t ac_majflt; /* Errores graves de paginación */
comp_t ac_swaps; /* Cantidad de intercambios (no usado) */
u_int32_t ac_exitcode; /* Estado de finalización del proceso
(consulte wait(2)) */
char ac_comm[ACCT_COMM+1];
/* Nombre de la orden (nombre de la última
orden ejecutada; con salida cero) */
char ac_pad[X]; /* bytes de relleno */ }; enum { /* Esto puede definirse en el campo ac_flag */
AFORK = 0x01, /* Se ejecutó fork pero no exec */
ASU = 0x02, /* Empleó privilegios de administrador */
ACORE = 0x08, /* Volcadod e pila */
AXSIG = 0x10 /* Terminado por una señal */ };
El tipo de datos comp_t es un valor de punto flotante que consta de un exponente de base 8 de 3 bits y una mantisa de 13 bits. Un valor, c, de este tipo se puede convertir en un entero (grande) del siguiente modo:
v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3);
Los campo ac_utime, ac_stime y ac_etime miden el tiempo en "tics de reloj" dividiendo ese valor entre sysconf(_SC_CLK_TCK) para convertirlo en segundos.
A partir de la versión 2.6.8 del núcleo es posible crear una versión alternativa del archivo de contabilidad si el núcleo ha sido compilado con la opción CONFIG_BSD_PROCESS_ACCT_V3 activada. En este caso, el registro contiene algunos campos adicionales y el tamaño de los campos c_uid and ac_gid se incrementa de 16 a 32 bits (en línea con el incremento del tamaño de los UID y GIDs desde la versión 2.4. Estos registros se definen del siguiente modo:
struct acct_v3 {
char ac_flag; /* Flags */
char ac_version; /* Always set to ACCT_VERSION (3) */
u_int16_t ac_tty; /* Controlling terminal */
u_int32_t ac_exitcode; /* Process termination status */
u_int32_t ac_uid; /* Real user ID */
u_int32_t ac_gid; /* Real group ID */
u_int32_t ac_pid; /* Process ID */
u_int32_t ac_ppid; /* Parent process ID */
u_int32_t ac_btime; /* Process creation time */
float ac_etime; /* Elapsed time */
comp_t ac_utime; /* User CPU time */
comp_t ac_stime; /* System time */
comp_t ac_mem; /* Average memory usage (kB) */
comp_t ac_io; /* Characters transferred (unused) */
comp_t ac_rw; /* Blocks read or written
(unused) */
comp_t ac_minflt; /* Minor page faults */
comp_t ac_majflt; /* Major page faults */
comp_t ac_swaps; /* Number of swaps (unused) */
char ac_comm[ACCT_COMM]; /* Command name */ };
La estructura de acct_v3 está definida desde la versión 2.6 de glibc.
La contabilidad de procesos se originó en BSD. Aunque está presente en muchos sistemas, su funcionamiento no está estandarizado y puede variar entre unos y otros.
Los registros se ordenan según la hora de finalización.
A partir de la versión 2.6.9 del núcleo, se guarda un registro distinto para cada hilo creado con la biblioteca NPTL. A partir de la versión 2.6.10 sólo se guarda un único registro para todo el proceso una vez que termine el último hilo del mismo.
El archivo /proc/sys/kernel/acct, descrito en proc(5), define como funciona la contabilidad de procesos cuando existe poco espacio en el disco.
Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.
La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org>..
15 Septiembre 2017 | Linux |