📄 00000016.htm
字号:
可以使用^S键锁住屏幕,结果是syslogd会被阻塞,直到有人按下^Q键解锁为止。 <BR> <BR> syslogd只能处理那些使用openlog()、syslog()、closelog()库例程发送消息的程序 <BR>,其他的程序会产生出自己的记录文件,这些文件的位置只能靠你自己去摸索。 <BR> <BR> 每次修改syslog.conf文件之后必须重新启动syslogd: <BR> <BR> killall –HUP syslogd <BR> <BR> 这个信号导致syslogd关闭所有记录文件,重读/etc/syslog.conf然后重新开始记录。 <BR> <BR> 必须注意的一个问题是如果想修改syslogd的记录文件(比如压缩或者清空它们),那 <BR>么你必须先杀掉syslogd进程,在修改完毕之后再启动syslogd。否则,如果某个文件正 <BR>好处于打开的状态,那么可能会产生出不可预测的后果。 <BR> <BR> 在一些较早的系统上,建议你用mark消息不断地产生出时间戳,以便确定系统是在什 <BR>么时间发送的消息,不过在现在版本的syslogd中,syslogd程序会自动写下消息的产生 <BR>时间,因此这个设施已经不需要了。 <BR> <BR> 9.2.2 进程记账 <BR> <BR> 如同我们介绍的那样,Linux是System V和BSD的奇怪组合,不过这个组合看起来挑选 <BR>的很好。Linux的启动脚本是System V类型的,而打印系统是BSD。下面的进程记账系统 <BR>是来自BSD的又一个特性。 <BR> <BR> 我们仍然保持本章开始的看法,即在一般情况下,对Linux系统进行进程记账是没有多 <BR>少意义的,因为对于一台internet服务器,你不会允许用户随便登录到你的机器上来, <BR>而httpd程序的用户身份是nobody。不过,如果你的Linux机器允许别人上来进行某些很 <BR>消耗资源的操作,比如说你有一台PIII Xeon的机器,允许用户在上面跑matlab这类极其 <BR>消耗CPU速度的工作,你可能就需要BSD进程记账系统了。 <BR> <BR> 要使用进程记账系统,首先必须正确地配置内核。大部分发行版本中的缺省内核并没 <BR>有配置为允许进程记账,因此你必须重新编译内核。在Linux内核中,这部分功能在“G <BR>eneral Setup”中,相应的选项是“BSD Process Accounting”,配置内核的过程我们 <BR>在前面已经介绍过,比如我们用图形方式进行系统配置 <BR> <BR> #make xconfig <BR> <BR> 在配置界面出现之后,选择General Setup选项,出现子选单: <BR> <BR> <BR> <BR> 图9.1 设置进程记账 <BR> <BR> 设置BSD进程记账系统为yes,然后重新编译内核,用新内核启动,然后就可以设置进 <BR>程记账了。 <BR> <BR> 记账程序必须用命令启动,启动它的命令是/sbin/accton程序,格式是 <BR> <BR> /sbin/accton [记录文件] <BR> <BR> 例如#/sbin/accton /var/log/pacct将会打开进程记账系统,记账信息存放在/var/l <BR>og/pacct文件中。注意,在启动记账之前,/var/log/pacct文件必须存在,你可以用to <BR>uch命令自己建立它: <BR> <BR> #touch /var/log/pacct <BR> <BR> 不带参数的accton程序关闭进程记账功能: <BR> <BR> #/sbin/accton <BR> <BR> 在设置了记账功能之后,就可以观察各个用户的记录信息了,第一种情况是汇总记账 <BR>数据,对每个用户的操作进行归纳,这可以通过sa命令来完成,sa命令的开关极其复杂 <BR>,我们也不想介绍这些无聊的信息(绝大多数用于格式化输出),只介绍常用的几个命 <BR>令: <BR> <BR> sa <BR> <BR> 不带参数执行这个命令对系统记账信息按照命令进行进行归纳。它会产生出很长的分 <BR>栏信息,例如: <BR> <BR> [root@mail /root]# sa |more <BR> <BR> 266790 1979381.34re 7365.13cp 0avio 436k <BR> <BR> 16 93368.51re 7102.28cp 0avio 292k lpd* <BR> <BR> 5478 472026.69re 51.38cp 0avio 1148k httpd* <BR> <BR> 136 250.91re 46.90cp 0avio 469k ypserv* <BR> <BR> 3418 33.84re 33.76cp 0avio 1417k cc1 <BR> <BR> 24 2223.79re 22.36cp 0avio 328k cce <BR> <BR> 300 513535.07re 17.36cp 0avio 358k identd* <BR> <BR> 第一栏是总的命令执行次数,接下来的两栏是使用的时间信息:首先是命令消耗的时 <BR>间,然后是CPU使用的时间,第四栏是平均每次命令的I/O数量,第五栏是平均的内存使 <BR>用量,最后是命令的名字。 <BR> <BR> 如果要对用户的操作进行汇总,使用sa –m: <BR> <BR> #sa –m |more <BR> <BR> 266759 1979362.08re 7365.09cp 0avio 436k <BR> <BR> root 249106 1407784.55re 7325.03cp 0avio 425k <BR> <BR> wanghy 6944 25280.96re 23.88cp 0avio 356k <BR> <BR> nobody 7735 472039.06re 14.87cp 0avio 889k <BR> <BR> zhangfl 416 47.20re 0.18cp 0avio 394k <BR> <BR> 第一栏是用户的名字,注意总量以不带用户名的方式出现在最上面一行。第二栏是用 <BR>户执行的命令,第三栏和第四栏是使用的时间,即系统时间和CPU使用时间,接下来是平 <BR>均I/O量和内存使用量。 <BR> <BR> 如果你准备清空pacct文件,首先应该把它的内容转储到/var/log/savacct,这可以用 <BR>sa –s命令完成: <BR> <BR> #sa –s <BR> <BR> 第二种常用功能是对用户的连接时间记账,这个功能是由ac命令完成的。不过要注意 <BR>,这个记账信息是放在/var/log/wtmp文件中的,而在reboot时,很多系统脚本会自动删 <BR>除这个文件,因此你应该定时执行这个程序。 <BR> <BR> 不带参数的ac命令显示系统的总连接时间: <BR> <BR> # ac <BR> <BR> total 62.12 <BR> <BR> 如果要确定每个用户的连接时间,使用ac –p: <BR> <BR> # ac -p <BR> <BR> wanghy 12.19 <BR> <BR> wangxudong 0.37 <BR> <BR> a_ppp 0.16 <BR> <BR> lyf 3.24 <BR> <BR> pipi 0.05 <BR> <BR> root 46.12 <BR> <BR> zhangfl 0.00 <BR> <BR> total 62.12 <BR> <BR> 单位是小时。 <BR> <BR> 如果要单独确定某个用户的连接时间,在-p参数的后面使用用户的账号名字。 <BR> <BR> 也可以按照日期汇总这个信息: <BR> <BR> # ac -d <BR> <BR> Mar 10 total 0.37 <BR> <BR> Mar 11 total 1.43 <BR> <BR> Mar 11 total 7.70 <BR> <BR> Mar 12 total 17.51 <BR> <BR> Mar 13 total 1.35 <BR> <BR> Mar 14 total 3.17 <BR> <BR> Mar 18 total 3.42 <BR> <BR> Mar 19 total 19.57 <BR> <BR> Mar 20 total 3.16 <BR> <BR> Today total 4.56 <BR> <BR> 显然,12日和19日的连接时间比较长。 <BR> <BR> 有一个经常使用的记账信息是关于打印机的。如果在/etc/printcap变量中使用了打印 <BR>机的记账选项(af),那么就可以对打印机的使用进行记账,例如,打印机的设置文件 <BR>是这样: <BR> <BR> ##PRINTTOOL3## LOCAL laserjet 300x300 letter {} LaserJet Default {} <BR> <BR> lp:\ <BR> <BR> :sd=/var/spool/lpd/lp:\ <BR> <BR> :mx#0:\ <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -