十五 磁盘,监控日志相关攻略(df,du,time,who,w,users,uptime,last,watch,logger)
一 监视磁盘使用情况(du,df)
du(disk usage) 和df (disk free)命令可以报告磁盘的使用情况
1,找出某个文件(或多个文件)占用的磁盘空间 du file.txt 2,获得某个目录中所有文件的磁盘使用情况 #选项-a递归地输出指定目录或多个目录中所有文件的统计结果 du -a DIRECTORY 注:du DIRECTORY也可以输出类似的结果,但是只会显示子目录使用的磁盘空间,而不是显示每个文件的占用情况 3选项 -b 、 -k 和 -m 可以强制 du 使用特定的单位打印磁盘使用情况。注意,这些选项不能与 -h一同使用 #打印以字节(默认输出)为单位的文件大小 du -b FILE #打印KB为单位的文件大小 du -k FILE #打印以MB为单位的文件大小 du -m FILE #打印以指定块为单位的文件大小 du -B BLOCK_SIZE FILE 注: BLOCK_SIZE 以字节为单位 4从磁盘使用统计中排除部分文件 #选项 --exclude 会排除匹配模式的一个或多个文件。选项 --exclude-from 能够排除多个文件或模式。每个文件名或模式必须独占一行 $ ls *.txt >EXCLUDE.txt $ ls *.odt >>EXCLUDE.txt # EXCLUDE.txt 中包含了需要排除的文件列表 du --exclude-from EXCLUDE.txt DIRECTORY 5 选项 --max-depth 可以限制 du 应该遍历多少层子目录 du --max-depth 2 DIRECTORY 6 找出指定目录 中最大的10个文件 #第一种方法(包含目录的大小) du -ak SOURCE_DIR | sort -nrk 1 | head #第二种方法(只有文件的大小) find . -type f -exec du -k {} \; | sort -nrk 1 | head 7磁盘可用空间 df -h
二 计算命令执行时间
1 time命令可以测量应用程序的执行时间(包含命令) [root@rwwh ~]# time ./test.sh 1 2 3 4 5 6 7 8 第一个参数:1,参数个数为:8 第一个参数:2,参数个数为:7 第一个参数:3,参数个数为:6 第一个参数:4,参数个数为:5 第一个参数:5,参数个数为:4 第一个参数:6,参数个数为:3 第一个参数:7,参数个数为:2 第一个参数:8,参数个数为:1 real 0m0.003s user 0m0.000s sys 0m0.003s #time命令默认报告3类时间 Real:指的是壁钟时间(wall clock time),也就是命令从开始执行到结束的时间。这段时间包括其他进程所占用的时间片(time slice)以及进程被阻塞时所消耗的时间(例如,为等待I/O操作完成所用的时间) User:是指进程花费在用户模式(内核模式之外)中的CPU时间。这是执行进程所花费的时间。执行其他进程以及花费在阻塞状态中的时间并没有计算在内 Sys:是指进程花费在内核中的CPU时间。它代表在内核中执行系统调用所使用的时间和库代码(library code)不同,后者仍旧运行在用户空间。这与“user时间”类似,这也是真正由进程使用的CPU时间 注意:time 命令的可执行二进制文件位于/usr/bin/time,另外还有一个bash shell的内建命令也叫作 time 。当执行 time 时,默认调用的是shell的内建命令。内建的 time 命令选项有限。如果需要使用额外的功能,应该使用可执行文件time的绝对路径(/usr/bin/time) 2 选项 -o 可以将相关的时间统计信息写入文件 $ /usr/bin/time -o output.txt COMMAND #可以使用-a选项将命令执行时间追加到原文件的末尾 $ /usr/bin/time -a -o output.txt COMMAND 3 选项 -f 可以指定输出哪些统计信息及其格式。格式字符串包括一个或多个以 % 为前缀的参数。格式参数包括以下几种 real 时间 : %e user 时间 : %U sys 时间 : %S 系统分页大小: %Z $ /usr/bin/time -f "Time: %U" -a -o timing.log uname
三 获取当前登录用户的相关信息(who,w)
who命令
[root@rwwh ~]# who root tty1 2020-10-09 13:58 (:0) root pts/0 2020-10-09 14:11 (192.168.182.1) #who命令会显示出登录名,用户所使用的tty,登录时间以及登录用户的远程主机名 #TTY(该术语取自TeleTYperwriter)是与文本终端相关联的设备文件。当用户生成一个新终端时,对应的设备文件就会出现在/dev中(例如 /dev/pts/3)。可以通过执行命令 tty 来获得当前终端的设备路径
w命令
w命令可以获得有关登录用户更详细的信息 [root@rwwh ~]# w 16:54:31 up 3:01, 2 users, load average: 0.04, 0.07, 0.17 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 13:58 3:01m 11.59s 11.59s /usr/bin/Xorg :0 -br -v root pts/0 192.168.182.1 14:11 0.00s 0.16s 0.06s w
#第一行列出了当前时间,系统运行时间,当前登录的用户数量以及过去1/5/15分钟内的系统平均负载.
#第二行显示了每个登录会话的详细信息,其中包括登录名,TTY,远程主机,登录时间,空闲时间该用户登录后使用的 总CPU时间、当前运行进程所使用的CPU时间以及进程所对应的命令行
users命令
users命令只列出当前的登录用户列表 [root@rwwh ~]# users root root #使用sort和uniq进行过滤 users| tr ' ' '\n' |sort | uniq
uptime 命令
uptime 命令可以查看系统的加电运行时长 [root@rwwh ~]# uptime 17:02:23 up 3:09, 2 users, load average: 0.05, 0.08, 0.13 #提取运行时间, 原理:sed 使用单词up与第二个逗号(单词users之前)之间的内容替换掉整行文本 uptime | sed 's/.*up \(.*\),.*users.*/\1/'
last 命令
#last 命令可以获取自文件/var/log/wtmp创建之后登录过系统的用户列表 last last 命令会输出登录用户、用户所使用的 tty 、登录位置(IP地址或本地终端)、登录时间、登出时间、会话时长。伪用户名reboot表示系统重启 last reboot(或者是其他用户名),获取指定用户信息 lastb 命令可以获取失败的用户登录会话信息
四 使用watch命令监视输出
watch命令可以在终端中定时监视命令的输
①监控命令的输出 watch 'df -h ' ②-n SECONDS指定更相信输出的时间间隔 watch -n 5 'ls -l' ③ 选项-d能够着重标记出连续的命令输出之间的差异 # 以30 秒为间隔,着重标记出新的网络连接 $ watch -n 30 -d 'ss | grep ESTAB‘
五 使用syslog记录日志
与守护进程和系统进程相关的日志文件位于/var/log目录中.在Linux系统中,由守护进程sylogd 使用syslog标准协议处理日志。每一个标准应用程序都可以利用 syslogd 记录日志

①向日志文件/var/log/message中写入信息 [root@rwwh ~]# logger This is a test log line [root@rwwh ~]# tail -n 1 /var/log/messages Oct 16 13:45:10 rwwh root: This is a test log line 注:/var/log/messages是一个通用日志文件。如果使用 logger 命令,它默认将日志写入/var/log/messages中 ②选项 -t 可以定义消息标签 logger -t TAG This is a message ③选项 -f 可以将其他文件的内容记录到系统日志中 logger -f /var/log/source.log
了解: logrorate可以管理日志
浙公网安备 33010602011771号