ACCT(5) | п═я┐п╨п╬п╡п╬п╢я│я┌п╡п╬ п©я─п╬пЁя─п╟п╪п╪п╦я│я┌п╟ Linux | ACCT(5) |
п≤п°п╞¶
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; /* п╡я─п╣п╪я▐ я─п╟п╠п╬я┌я▀ п╕п÷ п╡ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▄я│п╨п╬п╪ я─п╣п╤п╦п╪п╣ */
comp_t ac_stime; /* п╡я─п╣п╪я▐ я─п╟п╠п╬я┌я▀ п╕п÷ п╡ я│п╦я│я┌п╣п╪п╫п╬п╪ я─п╣п╤п╦п╪п╣ */
comp_t ac_etime; /* п©я─п╬я┬п╣п╢я┬п╣п╣ п╡я─п╣п╪я▐ */
comp_t ac_mem; /* я│я─п╣п╢п╫п╣п╣ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╫п╫п╬п╧ п©п╟п╪я▐я┌п╦ (п п▒) */
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 п╬я┌ п©п╬я│п╩п╣п╢п╫п╣п╧
п╦я│п©п╬п╩п╫я▐п╡я┬п╣п╧я│я▐ п╨п╬п╪п╟п╫п╢я▀; п╥п╟п╡п╣я─я┬п╟п╣я┌я│я▐ null) */
char ac_pad[X]; /* п╠п╟п╧я┌я▀ п╥п╟п©п╬п╩п╫п╣п╫п╦я▐ */ }; enum { /* п╠п╦я┌я▀ п╢п╩я▐ п©п╬п╩я▐ ac_flag */
AFORK = 0x01, /* п╠я▀п╩ п╡я▀п©п╬п╩п╫п╣п╫ fork, п╫п╬ п╫п╣ exec */
ASU = 0x02, /* п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╩п╦я│я▄ п©я─п╟п╡п╟ я│я┐п©п╣я─п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▐ */
ACORE = 0x08, /* я│п╬п╥п╢п╟п╫ я└п╟п╧п╩ core */
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).
п╓п╬я─п╪п╟я┌ я└п╟п╧п╩п╟ я┐я┤я▒я┌п╟ п╡п╣я─я│п╦п╦ 3¶
п²п╟я┤п╦п╫п╟я▐ я│ я▐п╢я─п╟ п╡п╣я─я│п╦п╦ 2.6.8, п╪п╬п╤п╫п╬ я│п╬п╥п╢п╟п╡п╟я┌я▄ я└п╟п╧п╩ я┐я┤я▒я┌п╟ п╟п╩я▄я┌п╣я─п╫п╟я┌п╦п╡п╫п╬п╧ п╡п╣я─я│п╦п╦, п╣я│п╩п╦ п╥п╟п╢п╟я┌я▄ п©п╟я─п╟п╪п╣я┌я─ CONFIG_BSD_PROCESS_ACCT_V3 п©я─п╦ я│п╠п╬я─п╨п╣ я▐п╢я─п╟. п∙я│п╩п╦ я█я┌п╬я┌ п©п╟я─п╟п╪п╣я┌я─ я┐я│я┌п╟п╫п╬п╡п╩п╣п╫, я┌п╬ п╥п╟п©п╦я│п╦, я│п╬я┘я─п╟п╫я▒п╫п╫я▀п╣ п╡ я└п╟п╧п╩п╣ я┐я┤я▒я┌п╟, п╠я┐п╢я┐я┌ я│п╬п╢п╣я─п╤п╟я┌я▄ п╢п╬п©п╬п╩п╫п╦я┌п╣п╩я▄п╫я▀п╣ п©п╬п╩я▐, п╟ я┬п╦я─п╦п╫п╟ п©п╬п╩п╣п╧ c_uid п╦ ac_gid п╠я┐п╢п╣я┌ я─п╟я│я┬п╦я─п╣п╫п╟ я│ 16 п╢п╬ 32 п╠п╦я┌ (п╢п╩я▐ я│п╬п╬я┌п╡п╣я┌я│я┌п╡п╦я▐ я│ я┐п╡п╣п╩п╦я┤п╣п╫п╫я▀п╪ я─п╟п╥п╪п╣я─п╬п╪ UID п╦ GID п╡ Linux 2.4 п╦ п╫п╬п╡п╣п╣). п≈п╟п©п╦я│п╦ п╬п©я─п╣п╢п╣п╩п╣п╫я▀ я│п╩п╣п╢я┐я▌я┴п╦п╪ п╬п╠я─п╟п╥п╬п╪:
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; /* п╡я─п╣п╪я▐ я─п╟п╠п╬я┌я▀ п╕п÷ п╡ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▄я│п╨п╬п╪ я─п╣п╤п╦п╪п╣ */
comp_t ac_stime; /* п╡я─п╣п╪я▐ я─п╟п╠п╬я┌я▀ п╕п÷ п╡ я│п╦я│я┌п╣п╪п╫п╬п╪ я─п╣п╤п╦п╪п╣ */
comp_t ac_mem; /* я│я─п╣п╢п╫п╣п╣ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╫п╫п╬п╧ п©п╟п╪я▐я┌п╦ (п п▒) */
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 п╢п╩я▐ п╨п╟п╤п╢п╬п╧ п╫п╦я┌п╦ я│п╬я┘я─п╟п╫я▐п╩п╟я│я▄ я│п╡п╬я▐ п╥п╟п©п╦я│я▄ я┐я┤я▒я┌п╟; п╫п╟я┤п╦п╫п╟я▐ я│ Linux 2.6.10 п╬я┌п╢п╣п╩я▄п╫п╟я▐ п╥п╟п©п╦я│я▄ я│п╬я┘я─п╟п╫я▐п╣я┌я│я▐ п╢п╩я▐ п╡я│п╣пЁп╬ п©я─п╬я├п╣я│я│п╟ п©я─п╦ п╥п╟п╡п╣я─я┬п╣п╫п╦п╦ я─п╟п╠п╬я┌я▀ п╣пЁп╬ п©п╬я│п╩п╣п╢п╫п╣п╧ п╫п╦я┌п╦.
п▓ я└п╟п╧п╩п╣ proc/sys/kernel/acct, п╬п©п╦я│п╟п╫п╫п╬п╪ п╡ proc(5), п╬п©я─п╣п╢п╣п╩п╣п╫я▀ п╫п╟я│я┌я─п╬п╧п╨п╦, п╨п╬я┌п╬я─я▀п╣ я┐п©я─п╟п╡п╩я▐я▌я┌ п©п╬п╡п╣п╢п╣п╫п╦п╣п╪ я┐я┤я▒я┌п╟ п©я─п╬я├п╣я│я│п╬п╡ п©я─п╦ п╫п╣я┘п╡п╟я┌п╨п╣ п╪п╣я│я┌п╟ п╫п╟ п╢п╦я│п╨п╣.
п║п°п·п╒п═п≤п╒п∙ п╒п░п п√п∙¶
2008-06-15 | Linux |