了解/var/account/pacct或者/var/account/acct Acct文件格式
时间:2020-01-09 10:42:09 来源:igfitidea点击:
问题描述:您能在Linux/UNIX操作系统下解释/var/account/pacct或者/var/log/account/pacct文件吗?
解决方法:acct文件(/var/account/acct或者/var/account/pacct)格式在UNIX/Linux/BSD操作系统中很常见。
内核将启动进程记帐并存储在/var/account/pacct或者/var/log/account/pacct文件中,对于UNIX/Linux之类的操作系统,该文件在系统范围内是" unix进程记帐"或者" unix记帐文件"。
文件的位置和名称取决于UNIX/Linux变体:
- FreeBSD/OpenBSD的默认记帐文件:
/var/account/acct
- 红帽/RHEL/CentOS/Fedora Linux:
/var/account/pacct
- Debian/Ubuntu Linux:
/var/log/account/pacct
- Sun Solaris UNIX缺省记帐文件:
/var/adm/pacct
accton命令
accton实用程序用于打开或者关闭系统记帐。
如果使用参数acctfile调用,则启用系统记帐。
指定的acctfile必须在启动系统记帐之前存在,否则accton将返回错误。
您可以按以下方式运行accton:
# accton /path/to/file # accton /var/account/acct
在Red Hat/CentOS Linux下,您可以输入以下命令来启动计费服务:
# chkconfig psacct on # /etc/init.d/psacct
在Ubuntu/Debian Linux下,您需要输入以下命令来启动计费服务:
# update-rc.d acct defaults /etc/init.d/acct start
acct文件格式
内核为所有进程维护以下acct信息结构。
如果进程终止并且启用了记帐,则内核会调用acct(2)函数调用来准备记录并将其追加到记帐文件中。
#define AC_COMM_LEN 16 /* * Accounting structure version 2 (current). * The first byte is always zero. * Time units are microseconds. */ struct acctv2 { uint8_t ac_zero; /* zero identifies new version */ uint8_t ac_version; /* record version number */ uint16_t ac_len; /* record length */ char ac_comm[AC_COMM_LEN]; /* command name */ float ac_utime; /* user time */ float ac_stime; /* system time */ float ac_etime; /* elapsed time */ time_t ac_btime; /* starting time */ uid_t ac_uid; /* user id */ gid_t ac_gid; /* group id */ float ac_mem; /* average memory usage */ float ac_io; /* count of IO blocks */ __dev_t ac_tty; /* controlling tty */ uint16_t ac_len2; /* record length */ union { __dev_t ac_align; /* force v1 compatible alignment */ #define AFORK 0x01 /* forked but not exec'ed */ /* ASU is no longer supported */ #define ASU 0x02 /* used super-user permissions */ #define ACOMPAT 0x04 /* used compatibility mode */ #define ACORE 0x08 /* dumped core */ #define AXSIG 0x10 /* killed by a signal */ #define ANVER 0x20 /* new record version */ uint8_t ac_flag; /* accounting flags */ } ac_trailer; #define ac_flagx ac_trailer.ac_flag };
如果由execve(2)创建了终止的进程,则已执行文件的名称(最多10个字符)保存在ac_comm字段中,并且通过在ac_flag中设置以下多个标志之一来保存其状态: AFORK,ACOMPAT,ACORE和ASIG。
不再支持ASU。
总是在上述结构中设置ANVER。
如何使用acct文件?
您需要使用lastcomm或者sa命令使用acct文件。