分类: LINUX
2010-09-23 11:05:44
作用: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:暂挂所有其他标志并且打印每个命令的用户数字标识和命令名。
— 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分钟数
以下是代码片段: # sa -m /var/log/pacct 904 72.81re 0.27cp 1324k root 658 69.54re 0.27cp 926k nagios 237 3.24re 0.00cp 2400k sshd 8 0.00re 0.00cp 2104k smmsp 1 0.02re 0.00cp 2035k |
(2)指定sa读取手工建立的文件/var/account/acct
使用sa命令默认分别读取/var/account/下的pacct,savacct和usracct文件,我们需要指定它读取手工建立的文件/var/account/acct。
以下是代码片段: # sa -a --other-acct-file /var/account/acct 3 0.00re 0.00cp 0avio 726k 1 0.00re 0.00cp 0avio 1207k ls 1 0.00re 0.00cp 0avio 571k goodc 1 0.00re 0.00cp 0avio 399k accton |
(3)按平均CPU时间进行记账记录总结
sa -k
at:定时运行命令
作用:at命令在指定时刻执行指定的命令序列。
用法:at [-V] [-q 队列] [-f file] [-m] time
主要选项如下。
— -V:输出版本号。
— -q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母顺序越高则队列优先级别越低。
— -f:从文件中读取命令或Shell脚本,而非在提示后指定它们。
— -m:执行完作业后发送电子邮件给用户。
— time:设定作业执行的时间。time参数可以是下面用法中的任何一种。
Ø HH:MM用法——如04:00,代表4:00AM。如果时间已过,就会在第二天的这一时间执行。midnight代表12:00AM。noon代表12:00PM。teatime代表4:00PM。
Ø 英文月名、日期、年份用法——如January 15 2005,代表2005年1月15日。年份可无。
Ø MMDDYY,MM/DD/YY或MM.DD.YY用法——如011505,代表2005年1月15日。
Ø now +时间用法——时间以minutes,hours,days或weeks为单位。如now + 5 days,代表命令应该在5天之后的此时此刻执行。偏移量的用法为时间+偏移量,单位是minutes,hours和days。
说明:at命令实际上是一组命令集合。at命令在指定时刻执行指定的命令序列。atq查询已经设定的命令序列。atrm删除已经设定的命令序列。batch,当系统负载低于一个设定值(0.8)时,执行设定的命令序列。
应用实例如下。
让系统在两天后的17:30执行文件data中指定的作业,使用命令:
# at -f date 15:30 +2 days
job 3 at 2010-03-27 15:30
atq:显示目前使用at命令后待执行的命令队列
作用:atq命令查询已经设定的命令序列。在用户是超级用户的情况下,列出所有人的作业。
用法:atq [-V] [-q 队列]
主要选项如下。
— -V:输出版本号。
— -q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母顺序越高则队列优先级别越低。
应用实例如下。
显示目前使用at命令后待执行的命令队列:
以下是代码片段: # atq 3 2010-03-27 15:30 a root 2 2010-03-26 15:30 a root |