runacct shell 脚本可在每次调用时生成五个基本报告。下表对这些报告进行了描述。
表 10–2 每日记帐报告
报告类型 |
说明 |
---|---|
按 tty 数显示终端线使用率。 |
|
按用户指明系统资源的使用情况(按用户 ID 的顺序列出)。 |
|
按命令指明系统资源的使用率,按内存使用的降序列出。换言之,使用内存最多的命令列在最前面。在每月命令摘要中会为当月报告此信息。 |
|
反映自上次调用 monacct 程序以来所累积数据的累计摘要。 |
|
显示每位用户上次登录的时间(按年代顺序列出)。 |
此报告提供了所使用的每个终端线的信息。下面是一个每日报告样例:
Jan 16 02:30 2004 DAILY REPORT FOR venus Page 1 from Mon Jan 15 02:30:02 2004 to Tue Oan 16 02:30:01 2004 1 runacct 1 acctcon TOTAL DURATION IS 1440 MINUTES LINE MINUTES PERCENT # SESS # ON # OFF console 868 60 1 1 2 TOTALS 868 -- 1 1 2 |
from 和 to 行指定报告中反映的时间段。此时间段包含自上次生成每日报告到生成当前每日报告之间的时间。然后,报告将显示有关系统重新引导、关机、电源断电恢复的日志以及由 acctwtmp 程序写入 /var/adm/wtmpx 文件的其他任何记录。有关更多信息,请参见 acct(1M) 手册页。
报告的第二部分是对终端线使用情况的细分。TOTAL DURATION 指出系统处于多用户模式(可通过终端线访问)的时间。下表介绍了每日报告所提供的数据。
终端线或访问端口。
在记帐期间使用该线的分钟数。
按 MINUTES 数划分的 TOTAL DURATION。
登录会话访问此线或端口的次数。
与 SESS 相同。(此列不再有意义。以前,此列可列出用户使用某线或端口登录的次数。)
用户注销的次数以及该线中出现的任何中断。通常,在系统进入多用户模式后初次调用 ttymon 时,端口中会发生中断。如果 # OFF 超出 # SESS 很多,则多路复用器、调制解调器或电缆可能存在问题。或者,某处存在连接问题。最常见的原因是电缆与多路复用器的连接不牢固。
在实际使用中,应监视 /var/adm/wtmpx 文件,因为连接记帐源自该文件。如果 wtmpx 文件快速增大,请执行以下命令确定哪条 tty 线噪音最大。
# /usr/lib/acct/acctcon -l file < /var/adm/wtmpx |
如果不断发生中断,则总体系统性能将受到影响。此外,还可能损坏 wtmp 文件。要更正此问题,请参见如何修复损坏的 wtmpx 文件。
每日使用情况报告按用户细分系统资源使用情况。下面是此报告的一个样例:
Jan 16 02:30 2004 DAILY USAGE REPORT FOR skisun Page 1 LOGIN CPU (MINS) KCORE- MINS CONNECT (MINS) DISK # OF # OF # DISK FEE UID NAME PRIME NPRIME PRIME NPRIME PRIME NPRIME BLOCKS PROCS SESS SAMPLES 0 TOTAL 72 148 11006173 51168 26230634 57792 539 330 0 2150 1 0 root 32 76 11006164 33664 26230616 22784 0 0 0 127 0 4 adm 0 0 22 51 0 0 0 420 0 0 0 101 rimmer 39 72 894385 1766020 539 330 0 1603 1 0 0 |
下表描述每日使用情况报告所提供的数据。
表 10–3 每日使用情况报告数据
每日命令摘要报告按命令显示系统资源使用情况。通过此报告,可以确定使用率最高的命令。根据这些命令使用系统资源的方式,可以准确掌握对系统进行调优的最佳方式。
这些报告按 TOTAL KCOREMIN 排序,它是任意衡量,但常用于计算系统中的垃圾箱。
下面是一个每日命令摘要样例:
TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ TOTALS 2150 1334999.75 219.59 724258.50 6079.48 0.10 0.00 397338982 419448 netscape 43 2456898.50 92.03 54503.12 26695.51 2.14 0.00 947774912 225568 adeptedi 7 88328.22 4.03 404.12 21914.95 0.58 0.01 93155160 8774 dtmail 1 54919.17 5.33 17716.57 10308.94 5.33 0.00 213843968 40192 acroread 8 31218.02 2.67 17744.57 11682.66 0.33 0.00 331454464 11260 dtwm 1 16252.93 2.53 17716.57 6416.05 2.53 0.00 158662656 12848 dtterm 5 4762.71 1.30 76300.29 3658.93 0.26 0.00 33828352 11604 dtaction 23 1389.72 0.33 0.60 4196.43 0.01 0.55 18653184 539 dtsessio 1 1174.87 0.24 17716.57 4932.97 0.24 0.00 23535616 5421 dtcm 1 866.30 0.18 17716.57 4826.21 0.18 0.00 3012096 6490 |
以下列表介绍了每日命令摘要提供的数据。
命令的名称。由于进程记帐系统只报告对象模块,因此所有 Shell 过程都集中在名称 sh 下。应对名为 a.out、core 或其他任何意外名称的程序的频率进行监视。可以使用 acctcom 程序来确定哪个用户执行了名称奇怪的命令以及是否使用了超级用户权限。
运行此命令的总次数。
进程运行时每分钟所使用千字节内存段的累计度量。
此程序累积的总处理时间。
此程序累积的总实时(挂钟)分钟数。
在 NUMBER CMDS 所反映的调用次数中 TOTAL KCOREMIN 的平均值(平均数)。
源自 NUMBER CMDS 和 TOTAL CPU-MIN 的平均值(平均数)。
CPU 总时间除以已用时间。显示系统可用性与系统使用率之比,提供进程在执行期间可用的总 CPU 时间的相对测量。
由读和写系统调用传送的字符数。可能因溢出而为负值。
一个进程执行的物理块读取和写入总数。
每日命令摘要报告的格式实际上与每月命令摘要报告的格式相同。但是,每日摘要只针对当前记帐期间进行报告,而每月摘要则针对从财务期间开始到当前日期之间的时间段进行报告。换言之,每月报告是一个累计摘要,它反映自上次调用 monacct 程序以来累积的数据。
Jan 16 02:30 2004 MONTHLY TOTAL COMMAND SUMMARY Page 1 TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ TOTALS 42718 4398793.50 361.92 956039.00 12154.09 0.01 0.00 16100942848 825171 netscape 789 3110437.25 121.03 79101.12 25699.58 0.15 0.00 3930527232 302486 adeptedi 84 1214419.00 50.20 4174.65 24193.62 0.60 0.01 890216640 107237 acroread 145 165297.78 7.01 18180.74 23566.84 0.05 0.00 1900504064 26053 dtmail 2 64208.90 6.35 20557.14 10112.43 3.17 0.00 250445824 43280 dtaction 800 47602.28 11.26 15.37 4226.93 0.01 0.73 640057536 8095 soffice. 13 35506.79 0.97 9.23 36510.84 0.07 0.11 134754320 5712 dtwm 2 20350.98 3.17 20557.14 6419.87 1.59 0.00 190636032 14049 |
有关每月命令摘要所提供数据的描述,请参见每日命令摘要。
此报告给出上次进行特定登录的日期。使用此信息可以找出未使用的登录以及可以存档和删除的登录目录。下面是一个上次登录报告。
Jan 16 02:30 2004 LAST LOGIN Page 1 01-06-12 kryten 01-09-08 protoA 01-10-14 ripley 01-07-14 lister 01-09-08 protoB 01-10-15 scutter1 01-08-16 pmorph 01-10-12 rimmer 01-10-16 scutter2 |
您随时都可以使用 acctcom 程序来检查 /var/adm/pacct n 文件的内容,或含有 acct.h 格式的记录的任何文件的内容。如果运行此命令时不指定任何文件也不提供任何标准输入,acctcom 命令将读取 pacct 文件。acctcom 命令所读取的每条记录都表示有关已终止进程的信息。可通过运行 ps 命令来检查活动进程。
acctcom 命令的缺省输出提供以下信息:
# acctcom COMMAND START END REAL CPU MEAN NAME USER TTYNAME TIME TIME (SECS) (SECS) SIZE(K) #accton root ? 02:30:01 02:30:01 0.03 0.01 304.00 turnacct adm ? 02:30:01 02:30:01 0.42 0.01 320.00 mv adm ? 02:30:01 02:30:01 0.07 0.01 504.00 utmp_upd adm ? 02:30:01 02:30:01 0.03 0.01 712.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 824.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 912.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 920.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 1136.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 576.00 closewtm adm ? 02:30:01 02:30:01 0.10 0.01 664.00 |
以下列表介绍了每个字段:
命令名称(如果以超级用户权限执行命令,则带有井号 (#))
用户名
tty 名称(如果未知则列为 ?)
命令执行开始时间
命令执行结束时间
实时(秒)
CPU 时间(秒)
平均大小(千字节)
通过使用 acctcom 命令选项可以获得以下信息。
fork/exec 标志的状态(1 表示不带 exec 的 fork)
系统退出状态
扰乱因子
kcore 总分钟数
CPU 因子
传送的字符
已读的块
显示有关选定进程的平均统计信息。记录输出后将列显该统计信息。
向后读取文件,先显示最新命令。如果读取标准输入,此选项将无效。
列显 fork/exec 标志和系统退出状态列。输出是一个八进制数字。
显示扰乱因子而不是平均内存大小,扰乱因子是进程在执行期间使用的总可用 CPU 时间的分数。扰乱因子 = 总 CPU 时间/已用时间。
列显输出中包含 I/O 计数的列。
显示总 kcore minutes 而不是内存大小。
显示平均核心转储大小。此大小是缺省值。
列显平均统计信息,而不是输出记录。
显示 CPU 因子: user-time/(system-time + user-time)。
显示单独的系统和用户 CPU 时间。
从输出中排除列标题。
只显示总 CPU 时间(系统加用户)超过 sec 秒的进程。
显示在 time(给定格式 hr[: min[: sec]])时或之前存在的进程。
显示在 time(给定格式 hr[: min[: sec]])时或之前开始的进程。对 -S 和 -E 使用相同时间,以显示在该时间存在的进程。
只显示属于 group 的进程。
只显示超出 factor 的进程,其中 factor 是“扰乱因子”(请参见 -h 选项)。
只显示传送的字符数大于 chars 所指定的分界数的进程。
只显示属于终端 /dev/line 的进程。
只显示与 pattern(正则表达式,只是 "+" 表示出现一次或多次)匹配的命令。
不列显记录,而以 acct.h 格式将其复制到 ofile 文件中。
只显示 CPU 系统时间超出 sec 秒的进程。
显示在 time(给定格式 hr[: min[: sec]])时或之后存在的进程。
显示在 time(给定格式 hr[: min[: sec]])时或之后开始的进程。
只显示属于 user 的进程。