4.1  accton:打开或关闭进程统计

作用:accton命令打开进程统计,如果不带任何参数,即关闭进程统计。

用法:accton [ -V | --version ] [ -h | --help ] [ filename ]

主要选项如下。

-V,--version:显示ac版本并退出。

-h,--help:打印命令概要,并显示系统默认accton文件。

说明:acct是一个工具包,里面包含有针对用户连接时间、进程执行情况等进行统计的工具。它可以记录用户登录信息。用户所执行的程序,程序执行情况信息等。它包含有下面一些命令。

ac:登录账号的简要信息。

accton:打开或关闭进程账号记录功能。

last:显示曾经登录过的用户。

lastcomm:显示已执行过的命令。

sa:进程账号记录信息的摘要。

dump-utmp:输出utmp文件内容。

dump-acct:输出acct或pacct文件内容。

应用实例如下。

打开或关闭进程统计。

在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。accton命令的形式为accton file,file必须事先存在。先使用touch命令创建pacct文件:

  1. #touch /var/log/pacct 

然后运行:

  1. # accton /var/log/pacct 

一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令:

4.2  lastcomm:显示以前使用过的命令的信息

作用:accton用来启动进程记录,这样就会把所有的命令都记录到一个指定的文件中,而lastcomm就是用来查看这个文件的,以方便系统管理。

用法:lastcomm [选项]... [文件]...

主要选项如下。

-strict-match:精确匹配每一列

--user name:只显示指定用户的命令记录。

--command name:只显示指定命令的记录。

--tty name:只显示在指定终端上运行的命令。

-f filename:指定一个命令记录文件来代替默认文件--acct。

--debug:打印其他内核信息。

-V,--version:打印版本。

-h,--help:打印概要和系统默认统计文件(Linux里面的默认文件多是/var/log/pacct 和/var/account/pacct)。

应用实例如下。

显示曾经执行过的命令,如图4-1所示。

  1. # lastcomm -f /var/log/pacct 
accton 打开或关闭进程统计_打开关闭进程 
(点击查看大图)图4-1  显示曾经执行过的命令

每一项包含如下的信息。

进程的命令。

标志,由系统标准统计进程完成。

S:命令由超级用户运行。

F:命令由子进程运行,没有使用exec的子进程。

C:命令运行在PDP-11兼容模式下。

D:命令终止时产生core文件。

X:命令由信号SIGTERM终止。

运行命令的用户名。

进程使用的系统时间。

4.3  sa:报告、清理并维护进程统计文件

作用:sa命令把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中,报告、清理并维护进程统计文件。

用法:sa [选项]... [文件]...

主要选项如下。

-a:打印所有命令的名称(包括那些带有不可打印字符的)。

-b:将输出按用户和系统时间的总和除以调用次数来进行分类。否则,输出为用户时间和系统时间之和。

-c:将每个命令使用时间打印为相对于所有命令使用时间的百分比。此外,还有用户、系统和实时。

-C:将记账文件合并到摘要文件中。如果摘要文件为旧用法,则将它转换为新用法。

-d:将输出按平均磁盘I/O操作数进行分类。

-D:将输出按总的磁盘I/O操作数进行分类和打印。

-f:不要强制进行交互式阈值压缩。此标志必须与-v标志一起使用。

-I:仅读取原始数据,不读取摘要文件。

-j:打印每个调用的秒数,而不是每个类别的总的分钟数。

-k:将输出按平均CPU时间进行分类。

-K:将输出按CPU存储量整数进行分类和打印。

-l:将系统时间和用户时间分离,而不是组合它们。

-m:打印每个用户的进程数和CPU分钟数。

-n:按调用数对输出进行分类。

-r:将分类的顺序倒置。

-s:将记账文件合并到摘要文件中。

-t:打印每个命令的用时与用户和系统时间和之比。

-u:暂挂所有其他标志并且打印每个命令的用户数字标识和命令名。

与sa命令一起使用的标志改变报告信息的类型。报告可以包含以下字段。

avio:每次执行的平均I/O操作次数。

cp:用户和系统时间总和,以分钟计。

cpu:和cp一样。

k:内核使用的平均CPU时间,以1k为单位。

k*sec:CPU存储完整性,以1k-core秒为单位。

re:实时时间,以分钟计。

s:系统时间,以分钟计。

tio:I/O操作的总数。

u:用户时间,以分钟计。

如果不指定任何标志而运行sa命令,摘要报告将包含每个命令的调用次数,以及re,cpu,avio和k字段。

应用实例如下。

(1)打印每个用户的进程数和CPU分钟数

  1. # sa -m /var/log/pacct  
  2.                                 904      72.81re 
    0.27cp     1324k  
  3. root                                658      69.54re 
    0.27cp      926k  
  4. nagios                          237       3.24re 
    0.00cp     2400k  
  5. sshd                              8       0.00re 
    0.00cp     2104k  
  6. smmsp                             1       0.02re 
    0.00cp     2035k 

(2)指定sa读取手工建立的文件/var/account/acct

使用sa命令默认分别读取/var/account/下的pacct,savacct和usracct文件,我们需要指定它读取手工建立的文件/var/account/acct。

  1. # sa -a --other-acct-file  /var/account/acct  
  2.  
  3.        3       0.00re       0.00cp         
    0avio       726k  
  4.        1       0.00re       0.00cp        
    0avio      1207k   ls  
  5.        1       0.00re       0.00cp        
    0avio       571k   goodc  
  6.        1       0.00re       0.00cp        
    0avio       399k   accton 

(3)按平均CPU时间进行记账记录总结

  1. sa  -k