一 监视磁盘使用情况(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.*//'
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可以管理日志