《Linux Shell脚本攻略》学习笔记-第九章
9.1 简介
计算机系统是由一组硬件及控制这些硬件的软件组成的。
Linux既提供了能够检查这些系统当前性能的交互式程序,也提供了用于记录一段时间内系统性能表现的模块。
9.2 监视磁盘使用情况
磁盘空间是一种有限的资源。
du和df命令可以报告磁盘使用情况,这两个工具能够统计出文件和目录的磁盘占用情况以及可用的磁盘空间。
递归找出指定目录或多个目录中所有文件的统计结果
du命令默认显示文件占用的总字节数,但是以KB、MB或GB为单位显示磁盘使用情况更方便人们阅读。
选项-c可以计算出文件或目录所占用的磁盘空间,另外还会输出单个文件的大小,会多出一行磁盘使用情况的统计:
选项-s只输出总计数据:
选项-b、-k、-m可以强制du使用特定的单位打印磁盘使用情况。
选项--exclude和--exclude-from可以让du在磁盘使用统计中排除部分文件
喜爱选哪个--exclude只能排除匹配模式的一个或者多个文件。选项--exclude-from能够排除多个文件或者模式。每个文件名或模式必须要独占一行。可以在txt文件中包含需要排除的文件列表。
当使用du命令时,要确保其对所有文件有读权限,对所有的目录有读权限和执行权限。如果权限不合适,du会返回出错信息。
df的-h选项会以易读的格式输出磁盘空间信息
df命令也可以使用目录作为参数,在这种情况,会输出该目录所在分区的可用磁盘空间情况
9.3 计算命令执行时间
time命令可以测量出应用程序的执行时间:
②. 内建的time命令选项有限,如果需要使用额外的功能,应该使用可执行文件time的绝对路径(/usr/bin/time)
real时间%e | user时间%U | sys时间%S | 系统分页大小%Z |
参数%M会显示所使用的最大内存,参数%Z会显示系统页面大小
9.4 收集登录用户、启动日志及启动故障的相关信息
Linux包含了一些能够报告运行系统各方面信息的命令,其中包括当前登录用户、主机加电时间以及启动故障。
该命令会显示出登录名、用户所使用的TTY、登陆时间以及登录用户的远程主机名。
如果某个用户有多个登录会话,不管是远程的还是打开了多个终端窗口,那么该用户会被多次显示。
up之后的时间表示了系统已经加电运行了多久
last命令还可以获取指定用户信息,伪用户名reboot表示重启系统。
你必须要以root用户的身份运行lastb。
9.5 列出一小时内占用CPU最多的10个进程
PS命令能够显示出系统中进程的详细信息,包括CPU使用情况、所执行的命令、内存占用、进程状态等。
用于监视并计算一小时内CPU使用情况的shell脚本
9.6 使用watch监视命令输出
watch命令会按照指定的间隔时间来执行命令并显示其输出。
我们可以使用-n seconds来指定更新输出的时间间隔。
选项-d能够着重标记出连续的命令输出之间的差异
9.8 记录文件及目录访问情况
与守护进程和系统进程相关的日志文件位于/var/log目录中。
日志文件有助于我们推断系统出现了什么故障,logger命令可以通过syslogd记录日志。
/var/log/messages是一个通用日志文件,如果使用logge命令,它默认将日志写入到/var/log/messages中。
9.10 通过监视用户登录找出入侵者
9.11 监视远程磁盘的健康状况
脚本使用SSH登录远程系统,采集每台主机的磁盘使用情况,然后写入中央主机的日志文件中。
远程主机中必须要有一个公用账户,以便脚本能够登录系统采集数据。
9.12 确定系统中用户的活跃时段
这则攻略利用系统日志找出每个用户在服务器上停留了多久,并根据时间长短对其划分等级,最后生成一份报告,其中包括等级、用户名、首次登录时间、最后登录时间、登录次数以及总使用时长。
运行结果:
9.13 电源使用情况的测量与优化
powertop能够测量每个电源模块的消耗,支持交互式的电源优化。
选项-html会使得powertop测量一段时间,然后生成一份默认名称为PowerTOP.html的报表。
9.14 监视磁盘活动
iotop可以持续监视,也可以生成固定时间段的监视报告。
9.15 检查磁盘及文件系统错误
检查文件系统的标准工具是fsck。如果文件系统长时间没有检查或是出于某种原因怀疑文件系统有损坏,Linux会在启动的时候自动执行fsck,你也可以手动执行该命令。
9.16 检查磁盘健康状态
短期检测只需要几分钟时间,长期检测在大容量设备商可能要花几个小时的时间。
检测结果可以使用命令smartctl -a查看。
9.17 获取磁盘统计数据
- hdparm命令可以测试磁盘性能,选项-t和-T能够测试缓冲与缓存度操作
- hdparm命令能够给出更多的此类数据并检查磁盘在系统中的执行状况。
- 选项-t可以强迫SMART设备进行自检,这不会伤害磁盘,并可以在提供服务的同时执行。
- 选项-a会报告设备的全部状态信息
- 选项-a指示fsck尝试自动修复错误,无需询问用户是否进行修复
- 选项-N可以模拟fsck要执行的操作
- 选项-A可以检查/etc/fstab中配置的所有文件系统
- 要检查分区或者文件系统的错误,主需要将路径作为参数
- 选项-p可以监视特定进程
- -n指示执行N次后退出
- iotop -o只显示出那些正在进行的I/O活动的进程
- 选项-f可以将其他文件中的内容记录到系统日志中
- 选项-t可以定义消息标签
- 向日志文件中写入信息
- lastb命令可以获取失败的用户登录会话信息
- last命令可以获取来自文件/var/log/wtmp创建之后扥估过系统的用户列表
- uptime命令可以查看系统的加电运行时长
- uesr命令只列出当前的用户登录列表
- w命令可以获得有关登录用户更详细的信息
- who命令可以获取当前登录用户的相关信息
- 选项-f可以指定输出哪些统计信息及其格式
- 选项-a可以与-o配合使用,将命令执行的时间追加到源文件的末尾
- 选项-o可以将相关的时间统计信息写入文件
- real:指的是壁钟时间,也就是命令从开始执行到结束的时间
- user:指进程花费在用户模式中的CPU时间,这是执行进程所花费的时间
- sys:指进程花费在内核中的CPU时间,代表了在内核中执行系统调用所使用的时间
- time默认报告三类时间
- 磁盘可用空间信息
- 从磁盘使用统计中排除部分文件
- 使用特定的单位打印文件
- 显示磁盘使用总计
- 以KB、MB或块为单位显示磁盘使用情况
- 找出某个文件占用的磁盘空间