acct(5) - wariua/manpages-ko GitHub Wiki
acct - νλ‘μΈμ€ ν΅κ³ νμΌ
#include <sys/acct.h>
νλ‘μΈμ€ ν΅κ³ μ΅μ
(CONFIG_BSD_PROCESS_ACCT
)μ μΌμ 컀λμ λΉλ ν κ²½μ°μ λ€μκ³Ό κ°μ΄ acct(2)λ₯Ό νΈμΆνλ©΄ νλ‘μΈμ€ ν΅κ³ μμ§μ μμνλ€.
acct("/var/log/pacct");
νλ‘μΈμ€ ν΅κ³λ₯Ό μΌλ©΄ μμ€ν
μ κ° νλ‘μΈμ€κ° μ’
λ£ν λλ§λ€ 컀λμ΄ ν΅κ³ νμΌμ λ μ½λλ₯Ό κΈ°λ‘νλ€. κ·Έ λ μ½λλ μ’
λ£ νλ‘μΈμ€μ λν μ 보λ₯Ό λ΄κ³ μμΌλ©° <sys/acct.h>
μ λ€μκ³Ό κ°μ΄ μ μλΌ μλ€.
#define ACCT_COMM 16
typedef u_int16_t comp_t;
struct acct {
char ac_flag; /* ν΅κ³ νλκ·Έ */
u_int16_t ac_uid; /* μ¬μ©μ ID */
u_int16_t ac_gid; /* κ·Έλ£Ή ID */
u_int16_t ac_tty; /* μ μ΄ ν°λ―Έλ */
u_int32_t ac_btime; /* νλ‘μΈμ€ μμ± μκ°
(μν¬ν¬ μ΄ν μ΄) */
comp_t ac_utime; /* μ¬μ©μ CPU μκ° */
comp_t ac_stime; /* μμ€ν
CPU μκ° */
comp_t ac_etime; /* κ²½κ³Ό μκ° */
comp_t ac_mem; /* νκ· λ©λͺ¨λ¦¬ μ¬μ©λ (kB) */
comp_t ac_io; /* μ μ‘ν λ¬Έμ μ (μ¬μ© μ ν¨) */
comp_t ac_rw; /* μ½κ±°λ μ΄ λΈλ‘ μ (μ¬μ© μ ν¨) */
comp_t ac_minflt; /* λ§μ΄λ νμ΄μ§ ν΄νΈ */
comp_t ac_majflt; /* λ©μ΄μ νμ΄μ§ ν΄νΈ */
comp_t ac_swaps; /* μ€μ κ°μ (μ¬μ© μ ν¨) */
u_int32_t ac_exitcode; /* νλ‘μΈμ€ μ’
λ£ μν
(wait(2) μ°Έκ³ ) */
char ac_comm[ACCT_COMM+1];
/* λͺ
λ Ή μ΄λ¦ (λ§μ§λ§ μ€ν λͺ
λ Ήμ
basename. λ μ’
λ£) */
char ac_pad[X]; /* ν¨λ© λ°μ΄νΈ */
};
enum { /* ac_flag νλμ μ€μ λ μ μλ λΉνΈλ€ */
AFORK = 0x01, /* forkλ μ€ννκ³ execλ μ€ννμ§ μμμ */
ASU = 0x02, /* μνΌμ μ νΉκΆ μ¬μ©νμ */
ACORE = 0x08, /* μ½μ΄ λ€ν νμ */
AXSIG = 0x10 /* μκ·Έλλ‘ μ£½μμ */
};
λ°μ΄ν° νμ
comp_t
λ 3λΉνΈ 8μ§μ μ§μμ 13λΉνΈ κ°μλ‘ μ΄λ€μ§ λΆλμμμ κ°μ΄λ€. λ€μκ³Ό κ°μ΄ ν΄μ μ΄ νμ
μ κ° c
λ₯Ό (long ν) μ μλ‘ λ³νν μ μλ€.
v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3);
ac_utime
, ac_stime
, ac_etime
νλλ "ν΄λ ν±" λ¨μλ‘ μΈ‘μ ν μκ°μ΄λ€. κ·Έ κ°μ sysconf(_SC_CLK_TCK)
μΌλ‘ λλλ©΄ μ΄ λ¨μλ‘ λ°κΏ μ μλ€.
컀λ 2.6.8λΆν°λ 컀λμ λΉλ ν λ CONFIG_BSD_PROCESS_ACCT_V3
μ΅μ
μ μ€μ νλ©΄ λ€λ₯Έ λ²μ μΌλ‘ ν΅κ³ νμΌμ λ§λ€μ΄ λΌ μ μλ€. μ΄ μ΅μ
μ΄ μ€μ λΌ μμΌλ©΄ ν΅κ³ νμΌμ κΈ°λ‘λλ λ μ½λμ λͺ κ°μ§ νλκ° μΆκ°λλ©° ac_uid
λ° ac_gid
νλκ° (리λ
μ€ 2.4 λ° μ΄νμμμ UID λ° GID ν¬κΈ° μ¦κ°μ λ§μΆ°) 16λΉνΈμμ 32λΉνΈλ‘ 컀μ§λ€. λ μ½λκ° λ€μκ³Ό κ°μ΄ μ μλΌ μλ€.
struct acct_v3 {
char ac_flag; /* νλκ·Έ */
char ac_version; /* νμ ACCT_VERSION(3)μΌλ‘ μ€μ */
u_int16_t ac_tty; /* μ μ΄ ν°λ―Έλ */
u_int32_t ac_exitcode; /* νλ‘μΈμ€ μ’
λ£ μν */
u_int32_t ac_uid; /* μ€μ μ¬μ©μ ID */
u_int32_t ac_gid; /* μ€μ κ·Έλ£Ή ID */
u_int32_t ac_pid; /* νλ‘μΈμ€ ID */
u_int32_t ac_ppid; /* λΆλͺ¨ νλ‘μΈμ€ ID */
u_int32_t ac_btime; /* νλ‘μΈμ€ μμ± μκ° */
float ac_etime; /* κ²½κ³Ό μκ° */
comp_t ac_utime; /* μ¬μ©μ CPU μκ° */
comp_t ac_stime; /* μμ€ν
μκ° */
comp_t ac_mem; /* νκ· λ©λͺ¨λ¦¬ μ¬μ©λ (kB) */
comp_t ac_io; /* μ μ‘ν λ¬Έμ μ (μ¬μ© μ ν¨) */
comp_t ac_rw; /* μ½κ±°λ μ΄ λΈλ‘ μ (μ¬μ© μ ν¨) */
comp_t ac_minflt; /* λ§μ΄λ νμ΄μ§ ν΄νΈ */
comp_t ac_majflt; /* λ©μ΄μ νμ΄μ§ ν΄νΈ */
comp_t ac_swaps; /* μ€μ κ°μ (μ¬μ© μ ν¨) */
char ac_comm[ACCT_COMM]; /* λͺ
λ Ή μ΄λ¦ */
};
acct_v3
ꡬ쑰체λ glibc λ²μ 2.6λΆν° μ μλΌ μλ€.
νλ‘μΈμ€ ν΅κ³λ BSDμμ μ λν κ²μ΄λ€. λλ€μ μμ€ν μ μκΈ°λ νμ§λ§ νμ€νλ λμ΄ μμ§ μμμ μμ€ν λ§λ€ μΈλΆ λ΄μ©μ΄ λ€μ λ€λ₯΄λ€.
ν΅κ³ νμΌμ λ μ½λλ€μ νλ‘μΈμ€ μ’ λ£ μκ° μμλ‘ λ€μ΄κ° μλ€.
컀λ 2.6.9κΉμ§μμλ NPTL μ€λ λ λΌμ΄λΈλ¬λ¦¬λ‘ μμ±λ μ€λ λλ§λ€ λ°λ‘ ν΅κ³ λ μ½λκ° κΈ°λ‘λλ€. 리λ μ€ 2.6.10λΆν°λ νλ‘μΈμ€μ λ§μ§λ§ μ€λ λ μ’ λ£ λ νλ‘μΈμ€ μ 체μ λν ν΅κ³ λ μ½λ νλλ§ κΈ°λ‘νλ€.
proc(5)μμ μ€λͺ
νλ /proc/sys/kernel/acct
νμΌμλ λμ€ν¬ 곡κ°μ΄ λͺ¨μλ λ νλ‘μΈμ€ ν΅κ³ κΈ°λ₯μ λμ λ°©μμ μ μ΄νλ μ€μ λ€μ΄ μλ€.
lastcomm(1)
, acct(2), accton(8)
, sa(8)
2017-09-15