如果你进入了这个页面,说明你的Linux磁盘多半已经因为空间不足报警了,而且是/var/account/pacct这个文件导致的var挂载点空间不足。

这个文件的意思:

Linux下有一个记载进程记录的进程psacct,当一个进程终止时,把每个进程向统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。该文件可以通过数据的工具(sa,ac)进行分析。

解决方法:(注意,只有重启审计进程后空间才会真正被释放)

删除/var/account/下的文件

重启审计进程:/etc/init.d/psacct  restart

sacct 工具

内容提要

1.
了解 psacct 软件包的组成
2.
掌握 lastcomm 和 sa 命令使用之前的配置方法
3.
掌握 lastcomm 和 sa 命令的使用
4.
掌握 ac 命令的使用
5.
熟悉日志文件 /var/account/pacct 和 /var/log/wtmp 的
滚动配置
psacct 简介

管理员可以使用 psacct 软件包提供的工具监视所有用户执行的命令,包括 CPU 时间和内存占用,实现进程
记帐功能。

psacct 软件包提供了三个进程活动监视工具 : ac, lastcomm和 sa。

accton 用于打开或关闭进程记帐功能,它是运行 lastcomm 和 sa 命令的前提。 accton 命令是一个开关,
运行一次将打开进程记帐功能,再运行一次将关闭进程记帐功能。为了方便管理员使用, CentOS提供一个
init脚本执行 accton命令,您可以使用如下的命令打开或关闭进程记帐功能。

# service psacct start
# service psacct stop

..为避免进程记帐日志文件过大,通常在使用进程记帐功能时才打开,不用时就将其关闭。
..默认情况下, psacct 服务没有打开。若您想在系统启动时就打开进程记帐功能,请执行如下命令:
chkconfig acct on

lastcomm 和 sa 命令默认从进程记帐文件 /var/account/pacct 中读取数据,此文件为二进程文件。同时系
统提供了 /etc/logrotate.d/psacct 脚本用 cron实现进程记帐文件的滚动。

ac 命令从 /var/log/wtmp 文件中读取数据,此文件也为二进程文件。

lastcomm

lastcomm 命令格式

lastcomm命令用于从 /var/account/pacct 搜索并显示以前执行过的命令信息。
命令格式为:

lastcomm [ Command ] [ Username ] [ Terminal ]


lastcomm 命令显示的列表被限制在以下范围:

.
command 参数指定命令。
.
Username参数指定用户执行的命令。

Terminal 参数指定由终端发出的命令。
当三者易发生混淆时,可以使用如下的参数格式:

lastcomm [ --command name ] [ --user name ] [ --tty name ]

默认情况下,各个参数之间是“或”的关系,可以使用 ––strict-match参数实现参数表的精确匹
配,即各个参数之间是“与”的关系。

lastcomm 使用举例

1、显示所有记录在 /var/account/pacct 文件中以前执行过的命令信息

# lastcomm
bash S root tty1 0.03 secs Tue Jan 22 12:17
ls crq pts/0 0.00 secs Tue Jan 22 11:49
ac osmond pts/1 0.00 secs Tue Jan 22 10:59
sh F root pts/0 0.00 secs Tue Jan 22 09:50
crond SF root __ 0.01 secs Tue Jan 22 09:50
sadc S root __ 0.01 secs Tue Jan 22 09:50


………………


2、显示 tty1终端上的 root 用户执行的所有命令的信息

# lastcomm tty1 root --strict-match
bash S root tty1 0.03 secs Tue Jan 22 12:17
clear root tty1 0.00 secs Tue Jan 22 12:17
ls root tty1 0.00 secs Tue Jan 22 12:17
bash F root tty1 0.00 secs Tue Jan 22 12:17
id root tty1 0.00 secs Tue Jan 22 12:17

………………


3、显示 pts/1终端上的 osmond 用户执行的名为 ac 的命令的信息

# lastcomm ac osmond pts/1 --strict-match
ac osmond pts/1 0.00 secs Tue Jan 22 10:59
ac osmond pts/1 0.00 secs Tue Jan 22 09:53


lastcomm 输出字段说明

1.命令名
2.当命令执行时记帐设备收集的标志:
.
S ––命令由超级用户执行
.
F ––命令由 fork产生,但是没有 exec(执行)
.
D ––命令终止并生成一个 core(核心)文件
.
X ––命令被 SIGTERM 信号终止
3.运行进程的用户名
4.运行进程的终端
5.这个进程用的 CPU 时间
6.进程开始的时间

sa


sa 的命令格式及输出

sa命令从 /var/account/pacct 原始记帐数据文件中读取信息并进行信息汇总。

sa 命令的显示结果可以包含以下字段:

1. calls ––命令的调用次数。
2.记帐设备收集的信息:
.
re ––实际使用时间(单位为分钟)。
.
cpu ––通常简写为 cp,表示用户和系统时间之和(单位为分钟)。
.
k ––平均 CPU 时间(单元的大小为 1K)。
.
u ––用户 CPU 时间(单位为分钟)。
.
s ––系统 CPU 时间(单位为分钟)。
3. command ––调用的命令。
不带任何参数的 sa 命令,将显示 calls、re、cpu、k 和 command 字段,以 CPU 字段排序。并将只用过
一次的命令放在 ***other类别中显示。

命令格式如下:

sa [ 参数 ]

常用参数:

.
-a : 显示所有命令的名称(包括那些带有不可打印字符的和只用过一次的命令)。
.
-c : 同时显示百分比字段。
.
-l : 将 CPU 时间字段拆分为系统时间和用户时间两个字段显示。

.
-t : 同时显示实际使用时间与 CPU 总时间之比,即 re/cp。
.
-u : 忽略所有其它参数并显示每个命令执行时的 CPU 时间。
.
-m : 显示每个用户的汇总信息。

.
––sort-real-time : 将输出按实际使用时间进行排序。
.
-b : 将输出按用户和系统时间的总和除以调用次数来进行排序,即 cp/calls。
.
-k : 将输出按平均 CPU 时间进行排序。
.
-n : 将输出按命令的调用次数进行排序。
.
-r : 将输出按逆序排列,可与其他排序参数一起使用。

.
-b、-k、-n 和 –– sort-real-time参数确定如何进行输出排序。

..如果在命令行中指定了不止一个排序参数,则只有最后那个参数生效。
sa 使用举例

1、要对 /var/account/pacct 文件命令进行记帐汇总

# sa
1355 3870.84re 0.79cp 778k # 所有命令的汇总行
2 718.17re 0.67cp 542k top