Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1284349
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-09 15:55:54


调度重复性系统任务(cron)
第15 章• 调度系统任务(任务) 269
1 0 3 * * */usr/sbin/logadm (1)
1 5 3 * * 0/usr/lib/fs/nfs/nfsfind (2)
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 (3)
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean (4)
下面介绍了上述每个命令行的输出:
 第一行在每天凌晨3:10 运行logadm 命令。
 第二行在每个星期日凌晨3:15 执行nfsfind 脚本。
 第三行在每天凌晨2:10 运行用于检查夏时制时间(并根据需要进行更正)的脚本。
如果没有RTC 时区,也没有/etc/rtc_config 文件,则此项不执行任何操作。
仅适用于x86 – /usr/sbin/rtc 脚本只能在基于x86 的系统中运行。
 第四行在每天凌晨3:30 检查(并删除)通用安全服务表/etc/gss/gsscred_db 中的重复
项。
有关crontab 文件中各行语法的更多信息,请参见第271 页中的“crontab 文件项的语法
”。
crontab 文件存储在/var/spool/cron/crontabs 目录中。在SunOS 软件安装期间,会提供包
括root 在内的若干个crontab 文件。请参见下表。
表15–2 缺省crontab 文件
crontab 文件功能
adm 记帐
lp 打印
root 一般系统功能和文件系统清除
sys 性能数据收集
uucp 一般uucp 清除
除了缺省的crontab 文件之外,用户还可以创建crontab 文件,以调度自己的系统任务。其
他crontab 文件在创建文件的用户帐户后命名,例如bob、mary、smith 或jones。
要访问属于root 或其他用户的crontab 文件,需要具有超级用户权限。
以下各节介绍了用于说明如何创建、编辑、显示和删除crontab 文件的过程。
调度重复性系统任务(cron)
270 系统管理指南:高级管理• 2006 年7 月
cron 守护进程处理调度的方法
cron 守护进程管理crontab 命令的自动调度。cron 守护进程的角色用于检查
/var/spool/cron/crontab 目录中是否存在crontab 文件。cron 守护进程将在启动时执行以
下任务:
 检查新的crontab 文件。
 阅读文件中列出的执行时间。
 在适当时间提交执行命令。
 侦听来自crontab 命令的有关更新的crontab 文件的通知。
cron 守护进程以几乎相同的方式来控制at 文件的调度。这些文件存储在
/var/spool/cron/atjobs 目录中。cron 守护进程还侦听来自crontab 命令的有关已提交的at
作业的通知。
crontab 文件项的语法
crontab 文件由命令组成,每行一个命令,这些命令将在每个命令行的前五个字段所指定的
时间自动执行。下表中介绍了这五个字段,它们以空格分隔。
表15–3 crontab 时间字段的可接受值
时间字段值
分钟0-59
小时0-23
月中某日1-31
月份1-12
星期中某日0-6(0 = 星期日)
在crontab 时间字段中使用特殊字符时请遵循以下规则:
 使用空格分隔每个字段。
 使用逗号分隔多个值。
 使用连字符指定某一范围的值。
 使用星号作为通配符来包括所有可能值。
 在一行开头使用注释标记(#) 来表示注释或空白行。
例如,以下crontab 命令项将于每月第一天和第十五天下午4 点在用户的控制台窗口中显示
提醒。
0 16 1,15 * * echo Timesheets Due > /dev/console
crontab 文件中的每个命令都必须只包含一行,即使该行很长也是如此。crontab 文件不识
别额外的回车。有关crontab 项和命令选项的更多详细信息,请参阅crontab(1) 手册页。
调度重复性系统任务(cron)
第15 章• 调度系统任务(任务) 271
创建和编辑crontab 文件
创建crontab 文件的最简单方法是使用crontab -e 命令。此命令会调用已为系统环境设置
的文本编辑器。系统环境的缺省编辑器在EDITOR 环境变量中定义。如果尚未设置此变量,
crontab 命令将使用缺省编辑器ed。最好选择您熟悉的编辑器。
以下示例显示如何确定是否已定义编辑器以及如何将vi 设置为缺省值。
$ which $EDITOR
$
$ EDITOR=vi
$ export EDITOR
创建crontab 文件时,该文件会自动放入/var/spool/cron/crontabs 目录,并以您的用户名
命名。如果具有超级用户权限,则可为其他用户或root 创建或编辑crontab 文件。
 如何创建或编辑crontab 文件
如果要创建或编辑属于root 或其他用户的crontab 文件,您必须成为超级用户或承担等效
角色。角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”
无需成为超级用户,便可编辑自己的crontab 文件。
创建新的crontab 文件,或编辑现有文件。
$ crontab -e [username]
其中,username 指定您要为其创建或编辑crontab 文件的用户帐户的名称。无需具有超级用
户权限便可创建自己的crontab 文件,但要为root 或其他用户创建或编辑crontab 文件,必
须具有超级用户权限。
注意– 如果意外键入了无选项的crontab 命令,请按下编辑器的中断字符。使用此字符将退
出而不会保存更改。如果保存了更改并退出文件,现有的crontab 文件将被空文件覆写。
向crontab 文件中添加命令行。
遵循第271 页中的“crontab 文件项的语法”中介绍的语法。crontab 文件将被放入
/var/spool/cron/crontabs 目录中。
验证crontab 文件更改。
# crontab -l [username]
开始之前
1
2
3
创建和编辑crontab 文件
272 系统管理指南:高级管理• 2006 年7 月
创建crontab 文件
以下示例显示如何为其他用户创建crontab 文件。
# crontab -e jones
添加到新crontab 文件中的以下命令项将在每个星期日的凌晨1:00 自动删除用户起始目录中
的所有日志文件。由于该命令项不重定向输出,因此将重定向字符添加到*.log 之后的命令
行中。这样可以确保正常执行命令。
# This command helps clean up user accounts.
1 0 * * 0 rm /home/jones/*.log > /dev/null 2>&1
 如何验证crontab 文件是否存在
要验证某一用户的crontab 文件是否存在,请在/var/spool/cron/crontabs 目录中使用ls
-l 命令。例如,以下输出显示用户jones 和smith 的crontab 文件存在。
$ ls -l /var/spool/cron/crontabs
-rw-r--r-- 1 root sys 190 Feb 26 16:23 adm
-rw------- 1root staff 225 Mar 1 9:19 jones
-rw-r--r-- 1 root root 1063 Feb 26 16:23 lp
-rw-r--r-- 1root sys 441Feb 26 16:25 root
-rw------- 1root staff 60 Mar 1 9:15 smith
-rw-r--r-- 1root sys 308 Feb 26 16:23 sys
使用crontab -l 命令验证用户的crontab 文件的内容,如第274 页中的“如何显示crontab
文件”中所述。
显示crontab 文件
crontab -l 命令显示crontab 文件内容的方式与cat 命令显示其他类型文件内容的方式非常
相似。无需将目录更改为/var/spool/cron/crontabs 目录(crontab 文件所在的目录),便
可使用此命令。
缺省情况下,crontab -l 命令会显示您自己的crontab 文件。要显示属于其他用户的
crontab 文件,您必须是超级用户。
示例15–1

显示crontab 文件
第15 章• 调度系统任务(任务) 273
 如何显示crontab 文件
成为超级用户或承担等效角色,以显示属于root 或其他用户的crontab 文件。角色包含授
权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide:
Security Services》中的“Configuring RBAC (Task Map)”。
无需成为超级用户或承担等效角色,便可显示自己的crontab 文件。
显示crontab 文件。
$ crontab -l [username]
其中,username 指定了要为其显示crontab 文件的用户帐户的名称。显示其他用户的
crontab 文件需要超级用户权限。
注意– 如果意外键入了无选项的crontab 命令,请按下编辑器的中断字符。使用此字符将退
出而不会保存更改。如果保存了更改并退出文件,现有的crontab 文件将被空文件覆写。
显示crontab 文件
此示例显示如何使用crontab -l 命令来显示用户缺省的crontab 文件的内容。
$ crontab -l
1 3 1 3 * * *chmod g+w /home1/documents/*.book > /dev/null 2>&1
显示缺省的root crontab 文件。
此示例演示如何显示缺省root crontab 文件。
$ suPassword:
Sun Microsystems Inc. SunOS 5.10 s10_51 May 2004
# crontab -l
#ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */
#
# The root crontab should be used to perform accounting data collection.
#
#
1 0 3 * * */usr/sbin/logadm
开始之前

示例15–2
示例15–3
显示crontab 文件
274 系统管理指南:高级管理• 2006 年7 月
1 5 3 * * 0/usr/lib/fs/nfs/nfsfind
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
#1 0 3 * * */usr/lib/krb5/kprop_script ___slave_kdcs___
显示其他用户的crontab 文件
此示例演示如何显示属于其他用户的crontab 文件。
$ su
Password:
Sun Microsystems Inc. SunOS 5.10 s10_51 May 2004
# crontab -l jones
1 3 1 3 * * *pc/home/jones/work_files /usr/backup/. > /dev/null 2>&1
删除crontab 文件
缺省情况下,会设置crontab 文件保护,以防止用户使用rm 命令意外删除crontab 文件。请
改用crontab -r 命令删除crontab 文件。
缺省情况下,crontab -r 命令会删除您自己的crontab 文件。
无需将目录更改为/var/spool/cron/crontabs(crontab 文件所在的目录),便可使用此命
令。
 如何删除crontab 文件
成为超级用户或承担等效角色,以删除属于root 或其他用户的crontab 文件。角色包含授
权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide:
Security Services》中的“Configuring RBAC (Task Map)”。
您无需成为超级用户或承担等效角色,便可删除自己的crontab 文件。
删除crontab 文件。
$ crontab -r [username]
其中username 指定要为其删除crontab 文件的用户帐户的名称。为其他用户删除crontab 文
件需要超级用户权限。
示例15–4
开始之前
1
删除crontab 文件
第15 章• 调度系统任务(任务) 275
注意– 如果意外键入了无选项的crontab 命令,请按下编辑器的中断字符。使用此字符将退
出而不会保存更改。如果保存了更改并退出文件,现有的crontab 文件将被空文件覆写。
验证是否已删除crontab 文件。
# ls /var/spool/cron/crontabs
删除crontab 文件
以下示例显示用户smith 如何使用crontab -r 命令删除此crontab 文件。
$ ls /var/spool/cron/crontabs
adm jones lp root smith sys uucp
$ crontab -r
$ ls /var/spool/cron/crontabs
adm jones lp root sys uucp
控制对crontab 命令的访问
您可以使用/etc/cron.d 目录中的两个文件来控制对crontab 命令的访问:cron.deny 和
cron.allow。这些文件只允许指定的用户执行crontab 命令任务,例如创建、编辑、显示或
删除自己的crontab 文件。
cron.deny 和cron.allow 文件包含用户名的列表,每行一个用户名。这些访问控制文件按以
下方式协同工作:
 如果存在cron.allow,则只有此文件中列出的用户可以创建、编辑、显示或删除
crontab 文件。
 如果不存在cron.allow,则除cron.deny 中列出的用户外,所有其他用户都可以提交
crontab 文件。
 如果cron.allow 和cron.deny 都不存在,则运行crontab 命令时需要超级用户权限。
编辑或创建cron.deny 和cron.allow 文件需要超级用户权限。
在SunOS 软件安装期间创建的cron.deny 文件包含以下用户名:
$ cat /etc/cron.d/cron.deny
daemon
bin
2
示例15–5
控制对crontab 命令的访问
276 系统管理指南:高级管理• 2006 年7 月
smtp
nuucp
listen
nobody
noaccess
缺省cron.deny 文件中的所有用户名都不能访问crontab 命令。您可以编辑此文件,以添加
被拒绝访问crontab 命令的其他用户名。
未提供缺省的cron.allow 文件。因此,在Solaris 软件安装后,所有用户(缺省cron.deny
文件中列出的用户除外)都可以访问crontab 命令。如果创建cron.allow 文件,则只有这
些用户可以访问crontab 命令。
 如何拒绝crontab 命令访问
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
编辑/etc/cron.d/cron.deny 文件并添加用户名,每行一个用户。将拒绝访问crontab 命令
的用户包括在内。
daemon
bin
smtp
nuucp
listen
nobody
noaccess
username1
username2
username3
1
2
控制对crontab 命令的访问
第15 章• 调度系统任务(任务) 277
.
.
.
验证/etc/cron.d/cron.deny 文件是否包含新项。
# cat /etc/cron.d/cron.deny
daemon
bin
nuucp
listen
nobody
noaccess
 如何将crontab 命令访问限制于指定的用户
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
创建/etc/cron.d/cron.allow 文件。
将root 用户名添加到cron.allow 文件中。
如果不将root 添加到文件中,则会拒绝超级用户对crontab 命令的访问。
添加用户名,每行一个用户名。将允许使用crontab 命令的用户包括在内。
root
username1
username2
username3
.
.
3
1
2
3
4
控制对crontab 命令的访问
278 系统管理指南:高级管理• 2006 年7 月
.
将crontab 命令访问限制于指定的用户
以下示例显示一个cron.deny 文件,该文件可以禁止用户名jones、temp 和visitor 访问
crontab 命令。
$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
temp
visitor
以下示例显示一个cron.allow 文件。用户root、jones、lp 和smith 是仅有的可以访问
crontab 命令的用户。
$ cat /etc/cron.d/cron.allow
root
jones
lp
smith
如何验证受限的crontab 命令访问
要验证特定用户是否可以访问crontab 命令,请在登录到该用户帐户后使用crontab -l 命
令。
示例15–6
控制对crontab 命令的访问
第15 章• 调度系统任务(任务) 279
$ crontab -l
如果用户可以访问crontab 命令并已创建crontab 文件,则会显示该文件。否则,如果用户
可以访问crontab 命令但不存在crontab 文件,则会显示以下类似消息:
crontab: can’t open your crontab file
该用户列在cron.allow 文件(如果该文件存在)中,或者未列在cron.deny 文件中。
如果用户不能访问crontab 命令,则无论是否存在以前的crontab 文件,都会显示以下消息

crontab: you are not authorized to use cron. Sorry.
此消息表明,该用户未列在cron.allow 文件中(如果该文件存在),或者已列在cron.deny
文件中。
使用at 命令(任务图)
任务说明参考
创建at 作业。使用at 命令执行以下操作:
 从命令行启动at 实用程序。
 键入要执行的命令或脚本,
每行一个。
 退出at 实用程序并保存作
业。
第282 页中的“如何创建at 作
业”
显示at 队列。使用atq 命令显示at 队列。第283 页中的“如何显示at 队
列”
验证at 作业。使用atq 命令确认属于特定用户
的at 作业已提交至队列。
第283 页中的“如何验证at 作
业”
显示at 作业。使用at -l[job-id 显示已提交至
队列的at 作业。
第283 页中的“如何显示at 作
业”
删除at 作业。使用at -r [job-id] 命令从队列中
删除at 作业。
第284 页中的“如何删除at 作
业”
拒绝访问at 命令。要拒绝用户访问at 命令,请编
辑/etc/cron.d/at.deny 文件。
第285 页中的“如何拒绝对at
命令的访问”
使用at 命令(任务图)
280 系统管理指南:高级管理• 2006 年7 月
调度单个系统任务(at)
以下各节介绍如何使用at 命令来执行下列任务:
 调度作业(命令和脚本)以供以后执行
 如何显示和删除这些作业
 如何控制对at 命令的访问
缺省情况下,用户可以创建、显示和删除自己的at 作业文件。要访问属于root 或其他用户
的at 文件,您必须具有超级用户权限。
提交at 作业时,会为该作业分配一个作业标识号和.a 扩展名。此指定将成为该作业的文件
名,以及其队列编号。
at 命令的说明
提交at 作业文件涉及以下步骤:
1. 调用at 实用程序并指定命令执行时间。
2. 键入以后要执行的命令或脚本。
注– 如果此命令或脚本的输出很重要,请确保将输出定向到一个文件中,以便以后检
查。
例如,以下at 作业将在七月的最后一天接近午夜时从用户帐户smith 中删除core 文件。
$ at 11:45pm July 31
at> rm /home/smith/*core*
at> Press Control-d
commands will be executed using /bin/csh
job 933486300.a at Tue Jul 3123:45:00 2004
控制对at 命令的访问
您可以设置一个文件,以便控制对at 命令的访问,只允许指定的用户创建、删除或显示有
关其at 作业的队列信息。控制对at 命令的访问的文件/etc/cron.d/at.deny 由用户名的列
表构成,每行一个用户名。此文件中列出的用户不能访问at 命令。
在SunOS 软件安装期间创建的at.deny 文件包含以下用户名:
调度单个系统任务(at)
第15 章• 调度系统任务(任务) 281
daemon
bin
smtp
nuucp
listen
nobody
noaccess
使用超级用户权限,您可以编辑at.deny 文件,以添加要限制其at 命令访问的其他用户
名。
 如何创建at 作业
启动at 实用程序,指定所需的作业执行时间。
$ at [-m] time [date]
-m 在作业完成后发送邮件。
time 指定要调度作业的小时。如果不根据24 小时制指定小时,请添加am 或pm。可接受
的关键字有midnight、noon 和now。分钟是可选的选项。
date 指定月份的前三个或更多字母、一周中的某日或关键字today 或tomorrow。
在at 提示符处,键入要执行的命令或脚本,每行一个。
通过在每行结尾处按回车键,可以键入多个命令。
按Ctrl-D 组合键,以退出at 实用程序并保存at 作业。
会为at 作业分配一个队列编号,这也是该作业的文件名。退出at 实用程序时将显示该编
号。
创建at 作业
以下示例显示用户jones 创建的at 作业,用于在下午7:30 删除其备份文件。她使用了-m 选
项,因此在作业完成后,她将收到电子邮件。
$ at -m 1930
at> rm /home/jones/*.backup
at> Press Control-D
1
2
3
示例15–7
调度单个系统任务(at)
282 系统管理指南:高级管理• 2006 年7 月
job 897355800.a at Thu Jul 12 19:30:00 2004
她收到一封确认已执行at 作业的电子邮件。
Your “at” job “rm /home/jones/*.backup”
completed.
以下示例显示jones 如何调度在星期六凌晨4:00 执行的大型at 作业。该作业输出被定向到
名为big.file 的文件中。
$ at 4 am Saturday
at> sort -r /usr/dict/words > /export/home/jones/big.file
 如何显示at 队列
要检查在at 队列中等待的作业,请使用atq 命令。此命令可以显示您已创建的at 作业的状
态信息。
$ atq
 如何验证at 作业
要验证您是否已创建了at 作业,请使用atq 命令。在以下示例中,atq 命令确认已将属于
jones 的at 作业提交至队列。
$ atq
Rank Execution Date Owner Job Queue Job Name
1st Jul 12, 2004 19:30 jones 897355800.a a stdin
2nd Jul 14, 2004 23:45 jones 897543900.a a stdin
3rd Jul 17, 2004 04:00 jones 897732000.a a stdin
 如何显示at 作业
要显示有关at 作业的执行时间信息,请使用at -l 命令。
$ at -l [job-id]



调度单个系统任务(at)
第15 章• 调度系统任务(任务) 283
其中,-l job-id 选项表示要显示其状态的作业的标识号。
显示at 作业
以下示例显示at -l 命令的输出,该输出提供有关用户已提交的所有作业的状态信息。
$ at -l
897543900.a Sat Jul 14 23:45:00 2004
897355800.a Thu Jul 12 19:30:00 2004
897732000.a Tue Jul 17 04:00:00 2004
以下示例显示使用at -l 命令指定单个作业时所显示的输出。
$ at -l 897732000.a
897732000.a Tue Jul 17 04:00:00 2004
 如何删除at 作业
成为超级用户或承担等效角色,以删除属于root 或其他用户的at 作业。角色包含授权和具
有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security
Services》中的“Configuring RBAC (Task Map)”。
无需成为超级用户或承担等效角色,便可删除自己的at 作业。
在作业执行之前从队列中删除at 作业。
$ at -r [job-id]
其中,-r job-id 选项指定要删除的作业的标识号。
使用at -l(或atq)命令验证是否已删除at 作业。
at -l 命令显示at 队列中剩余的作业。不应显示已指定标识号的作业。
$ at -l [job-id]
删除at 作业
在以下示例中,用户要删除计划在7 月17 日凌晨4 点执行的at 作业。首先,该用户显示at
队列,以找到作业标识号。然后,用户从at 队列中删除此作业。最后,该用户验证是否已
从队列中删除此作业。
示例15–8
开始之前
1
2
示例15–9
调度单个系统任务(at)
284 系统管理指南:高级管理• 2006 年7 月
$ at -l
897543900.a Sat Jul 14 23:45:00 2003
897355800.a Thu Jul 12 19:30:00 2003
897732000.a Tue Jul 17 04:00:00 2003
$ at -r 897732000.a
$ at -l 897732000.a
at: 858142000.a: No such file or directory
 如何拒绝对at 命令的访问
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
编辑/etc/cron.d/at.deny 文件并添加要禁止其使用at 命令的用户名,每行一个用户名。
daemon
bin
smtp
nuucp
listen
nobody
noaccess
username1
username2
username3
.
.
1
2
调度单个系统任务(at)
第15 章• 调度系统任务(任务) 285
.
拒绝at 访问
以下示例显示一个at.deny 文件,该文件已被编辑过,因此用户smith 和jones 不能访问at
命令。
$ cat at.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
smith
 如何验证at 命令访问已被拒绝
要验证是否已将用户名正确添加至/etc/cron.d/at.deny 文件,请在以该用户身份登录后使
用at -l 命令。如果用户smith 不能访问at 命令,则将显示以下消息。
# su smith
Password:
$ at -l
at: you are not authorized to use at. Sorry.
类似地,如果该用户尝试提交at 作业,则将显示以下消息:
$ at 2:30pm
at: you are not authorized to use at. Sorry.
示例15–10

调度单个系统任务(at)
286 系统管理指南:高级管理• 2006 年7 月
此消息确认该用户已列在at.deny 文件中。
如果允许访问at 命令,则at -l 命令不会返回任何内容。
调度单个系统任务(at)
第15 章• 调度系统任务(任务) 287
288
管理系统记帐(任务)
本章介绍如何设置和维护系统记帐。
以下是本章中概述信息的列表。
 第290 页中的“什么是系统记帐?”
 第294 页中的“设置系统记帐”
有关使用扩展记帐的信息,请参见《System Administration Guide: Solaris Containers-Resource
Management and Solaris Zones》中的第4 章,“Extended Accounting (Overview)”。
有关与系统记帐相关的逐步过程的信息,请参见第293 页中的“系统记帐(任务图)”。
有关各种系统记帐报告的参考信息,请参见第17 章。
系统记帐方面的新增功能
本节介绍Solaris 发行版在系统记帐方面新增或更改的功能。有关Solaris 新增功能的完整列
表以及Solaris 发行版的描述,请参见《Solaris 10 What’s New》。
Solaris 进程记帐和统计信息改进
Solaris 10:对平均负荷的内部实现cpu usr/sys/idle 以及记帐功能进行了更改。微状态记
帐取代了原有的记帐机制,并在缺省情况下一直启用。因此,您可能会注意到进程使用情
况和计时统计信息与以往稍有不同。
改用微状态记帐,可针对用户进程及其在各个状态上所花费的时间来提供更为准确的信
息。此外,这些信息还用于从/proc 文件系统中生成更精确的负荷平均值和统计信息。有关
更多信息,请参见proc(4) 手册页。
16 第1 6 章
289
什么是系统记帐?
Solaris OS 中的系统记帐软件是一组程序,用于收集和记录有关用户连接时间、进程占用的
CPU 时间和磁盘使用情况的数据。收集到此数据后,即可生成报告并针对系统使用情况收
取费用。
可以使用每日或每月系统记帐。或者,也可以按用户跟踪磁盘使用情况。
使用记帐程序可以执行以下任务:
 监视系统使用情况
 查找并更正性能问题
 维护系统安全
在设置系统记帐程序后,这些程序大部分时间会自行运行。
系统记帐的工作原理
设置自动记帐时,先要将记帐启动脚本放入根的crontab 文件中。然后,cron 命令即可自
动启动该记帐启动脚本。
以下概述介绍了系统记帐过程。
1. 在系统启动和关闭期间,会在记帐文件中收集有关系统使用(如用户登录、运行进程和
数据存储)的原始数据。
2. /usr/lib/acct/runacct 脚本会定期(通常一天一次)处理各种记帐文件并生成累积概要
文件和每日记帐报告。然后,/usr/lib/acct/prdaily 脚本将打印每日报告。
有关runacct 脚本的更多信息,请参见第303 页中的“runacct 脚本”。
3. 可以通过执行monacct 脚本每月处理并打印一次累积runacct 摘要文件。monacct 脚本生
成的摘要报告提供了一种按月或按其他财务周期对用户计费的有效方法。
系统记帐组件
系统记帐软件提供了可将数据组织为摘要文件和报告的C 语言程序和Shell 脚本。这些程序
驻留在/usr/lib/acct 目录中。记帐报告驻留在/var/adm/acct 目录中。
每日记帐有助于执行四种类型的审计:
 连接记帐
 进程记帐
 磁盘记帐
 费用计算
什么是系统记帐?
290 系统管理指南:高级管理• 2006 年7 月
连接记帐
通过连接记帐可以确定以下信息:
 用户已登录的时间
 tty 线的使用情况
 系统重新引导的次数
 已关闭和打开记帐软件的次数
要提供有关连接会话的记帐信息,系统需要存储以下数据:
 时间调整的记录
 引导时间
 关闭和打开记帐软件的次数
 运行级别的更改
 用户进程(login 进程和init 进程)的创建
 进程的终止
这些记录是从系统程序(如date、init、login、ttymon 和acctwtmp)的输出中生成的。这
些记录存储在/var/adm/wtmpx 文件中。wtmpx 文件中的项可以包含以下信息:
 登录名称
 设备名称
 进程ID
 项类型
 指明项创建时间的时间标记
进程记帐
通过进程记帐可以跟踪有关系统中运行的每个进程的以下数据:
 使用进程的用户的用户ID 和组ID
 进程的启动时间和已用时间
 进程的CPU 时间(用户时间和系统时间)
 进程使用的内存量
 进程运行的命令
 控制进程的tty
每次进程终止时,exit 程序便会收集此信息并将其写入/var/adm/pacct 文件。
磁盘记帐
通过磁盘记帐可以收集有关每个用户在磁盘中的文件的以下数据并设置数据格式:
 用户的用户名和用户ID
 用户的文件占用的块数
/usr/lib/acct/dodisk Shell 脚本以向/var/spool/cron/crontabs/root 文件中添加的项所确
定的时间间隔来收集此数据。反过来,dodisk 脚本会调用acctdisk 和acctdusg 命令。这些
命令按登录名称收集磁盘使用情况的信息。
 
 
以上文章转自于 : http://developers.sun.com.cn/
阅读(588) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~