shell脚本攻略学习笔记(八)当个好管家

先进行这方面的学习,主要还是因为公司内部需要自己搭建服务器,之前出现过磁盘空间满了之后服务器异常的现象。

8.2统计磁盘的使用情况
    df:disk free         du:dist usage
    du -a DIRECTORY;递归输出所有文件的统计结果
    常用du -sh命令,-c选项增加统计信息;
    在统计中排斥文件使用--exclude,如:
    du --exclude "WILDCARD" DIRECTORY
    du --exclude "*.txt" FILES
    du --exclude-from EXCLUDE.txt DIRECTORY;其中EXCLUDE.txt包含了需要排除的文件列表
    du --max-depth 2 DIRECTORY 指定统计深度。
    df -h可以以合适的方式打印出磁盘的可用信息。
    找出最大的10个文件而不是目录:
    find . -type f -exec du -k {} \; | sort -nrk 1 | head

8.3计算命令执行时间
    time ls
    通常我们调用的是shell内建的time命令,更多功能应该使用/usr/bin/time
    使用-f可以创建格式化输出:
    real %e  user %U sys %S
    更多可以使用的参数:
    %C 进行计时的命令名称及命令行参数
    %D 进程非共享数据区域的大小,以KB为单位
    %E 进程使用的real时间,现实格式为[小时:]分钟:秒
    %x 命令的推出状态
    %k 进程接收到的信号数量
    %W 进程被交换出主存的次数
    %Z 系统的页面大小,这是一个常量,但在不同的系统中,这个常量值也有不同,劳资的就是4096
    %P 进程所获得的CPU时间百分比。这个值等于user+system时间除以总共的运行时间。
    %K 进程的平均总(data+stack+text)内存使用量,以KB为单位
    %w 进程主动进行上下文切换的次数,例如等待I/O操作完成
    %c 进程被迫进行上下文切换的次数(由于时间片到期)

8.4与当前登录用户、启动日志及启动故障的相关信息
    获取当前登录用户的相关信息,用who w
    列出当前主机登录列表,users ,排除重复用户:users | tr ' ' ' \n' | sort | uniq
    获取系统已通电运行时间可用uptime
    获取前一次启动及用户登录会话的信息,last
    获取失败登录的会话信息lastb ,要以超级用户身份运行。

8.5打印出10条最常使用的命令
    bash跟踪用户之前输入过的命令,并将其存储在文件~/.bash_history中。
  1 #!/bin/bash
  2 #文件名:top10_commands
  3 #用途:列出最常用的10条命令
  4 printf "COMMAND\t COUNT\n";
  5
  6 cat ~/.bash_history | awk '{ list[$1]++; } \
  7 END{
  8 for(i in list)
  9 {
 10 printf("%s\t%d\n", i, list[i]); }
 11 }' | sort -nrk 2 | head
    目前对于awk还不是很熟,所以该脚本暂时先记录。

8.6列出1小时内占用CPU最多的进程

8.7用watch监视命令输出
    watch 'ls -l | grep "^d"'#只列出目录
    -n设置时间间隔
    -d表出差异项

8.8对文件及目录进行访问

8.9用logrotate管理日志文件

8.10用syslog记录日志

8.11通过监视用户登录找出入侵者

8.12监视远程磁盘的健康情况

8.13找出系统中用户的活动时段   


    

你可能感兴趣的:(shell脚本攻略学习笔记(八)当个好管家)