线上排查问题全套命令WIP(查看日志、端口占用、磁盘、CPU等)
1 查看日志
1.1 less
①less xxx.log:查看日志文件
②less -N xxx.log:带行号查看日志
③g:定位到文件顶部
④G(shift+g键):定位到文件底部
⑤/keyword:向下查找
n:向下匹配下一处匹配文本
N:向上匹配下一处匹配文本
⑥?keyword:向上查找
n:向上匹配下一处匹配文本
N:向下匹配下一处匹配文本
⑦F:实时滚动文档
F(shift+f键):类似与tail -f a.log
ctrl+C退出实时滚动模式
1.2 grep
①grep -i:忽略大小写过滤
②grep -v:反向查找
- grep -v “grep” 就是查找不含有 grep 字段的行
- grep -v ^# /etc/profile就是不显示以#开头的行(
^
在正则中匹配文件开头)
grep -v “grep” :查找不含有 grep 字段的行
grep -v ^# /etc/profile:过滤不以#开头的行
③grep -i ‘error’ a.log:忽略大小写过滤a.log中包含error的行
④grep ‘^2023’ upgrade.log:过滤2023开头的行
1.3 tail
①tail -n 200 a.log:查看最后200行日志
②tail -f a.log:追踪a.log,文件被删除时则暂停
当a.log有日志输出时,在终端也滚动输出
- 等同于–follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
【Ctrl】+【S】 暂停刷新
【Ctrl】+【Q】继续刷新
【Ctrl】+【C】退出 tail 命令
③tail -F a.log:追踪日志,当有同名文件出现继续追踪
等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
2 查看进程、端口占用
2.1 ps:查看进程
①ps -ef:显示系统中所有进程的列表,包括其他用户进程
ps -ef | grep java:过滤进程名包含java的进程
②ps -aux:显示详细的进程信息,包括CPU和内存使用情况
ps -aux | grep java:查看java进程详细信息
2.2 lsof(listen open files):查看端口等
① 查看端口占用:lsof -i :80
②查看端口被哪个进程占用:lsof -P -i :8080
③根据进程号查看进程使用的文件:lsof -p PID
④查看某个目录被哪些进程使用:lsof 目录名
2.3 netstat:查询进程名称和进程ID
netstat -tunlp
-t: 显示 TCP 连接
-u: 显示 UDP 连接
-n: 显示数字地址
-l: 列出状态是 LISTEN 的统计信息
-p: 显示程序的PID和名称
①netstat -tunlp | grep 3306:根据端口号查询
②netstat -tunlp | grep mysqld:根据进程名查询
③netstat -tunlp | grep 29520:根据进程ID查询
3 查看磁盘
3.1 df(disk free):查看文件系统的磁盘空间使用情况
df [选项] [文件]
-a 列出所有的文件系统,包括系统特有的 /proc 等文件系统
-k 以 KBytes 的容量显示各文件系统。命令 df -k 同命令 df
-m 以 MBytes 的容量显示各文件系统
-h 以人们较易阅读的 GBytes、MBytes、KBytes 等格式自行显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 不用磁盘容量,而以 inode 的数量来显示
-l 只显示本地文件系统。命令 df -l 同命令 df
–no-sync 忽略 sync 命令
-P 输出格式为POSIX
–sync 在取得磁盘信息前,先执行sync命令
-T 连同该磁盘分区的文件系统名称(例如 xfs)也列出
–block-size=<区块大小> 指定区块大小
-t <文件系统类型> 只显示选定文件系统的磁盘信息
-x <文件系统类型> 不显示选定文件系统的磁盘信息
–help 显示帮助信息
–version 显示版本信息
例如:
[root@ziyi ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/rhel-root 17811456 1196004 16615452 7% /
devtmpfs 497216 0 497216 0% /dev
tmpfs 508188 0 508188 0% /dev/shm
tmpfs 508188 6736 501452 2% /run
tmpfs 508188 0 508188 0% /sys/fs/cgroup
/dev/vda1 1038336 141508 896828 14% /boot
tmpfs 101640 0 101640 0% /run/user/0
1、Filesystem:代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);
2、1K-blocks:说明下面的数字单位是 1KB,可利用 -h 或 -m 来改变容量;
3、Used:使用掉的磁盘空间;
4、Available:也就是剩下的磁盘空间大小;用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间清单中;
5、Use%:就是磁盘的使用率,如果使用率高达 90% 以上,最好注意一下,免得容量不足造成系统问题,例如最容易占满的 /var/spool/mail 这个保存邮件的目录;
6、Mounted on:就是磁盘的挂载目录(挂载点)。
df -h:以可读方式显示磁盘和空间使用情况
[root@ziyi ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 17G 1.2G 16G 7% /
devtmpfs 486M 0 486M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6.6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda1 1014M 139M 876M 14% /boot
tmpfs 100M 0 100M 0% /run/user/0
3.2 du(disk usage):显示每个文件和目录的磁盘使用空间
df [选项] [文件]
-a或-all 列出所you的文件与目录容量,因为默认仅统计目录下面的文件量
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或–kilobytes 以KB(1024bytes)为单位输出。
-m或–megabytes 以MB为单位输出。
-s或–summarize 仅显示总量,只列出最后加总的值,而不列出每个个别的目录占用容量。
-S或–separate-dirs 不包括子目录下的总计,与 -s 有点差别
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
-x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或–dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
–exclude=<目录或文件> 略过指定的目录或文件。
-D或–dereference-args 显示指定符号链接的源文件大小。
-H或–si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或–count-links 重复计算硬件链接的文件。
du -h upgrade.log:显示upgrade.log所用空间
du -h dir0:查看dir0目录所占空间
du -h --max-depth=1:查看当前目录下各个子目录所用空间
df与du区别:df某些情况下更精准
1、du :是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
2、 df: 通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件,df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。
当文件系统也确定删除了该文件后,这时候du与df就一致了。
4 查看内存
4.1 free
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
free [-bkmhotV][-s <间隔秒数>]
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
B = bytes
K = kilos
M = megas
G = gigas
T = teras
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
[root@ziyi ~]# free
total used free shared buffers cached
Mem: 254772 184568 70204 0 5692 89892
-/+ buffers/cache: 88984 165788
Swap: 524280 65116 459164
Mem行(单位均为M):
total 系统总的可用物理内存大小
used 已被使用的物理内存大小
free 还有多少物理内存可用
shared 被共享使用的物理内存大小
buff/cache 被 buffer 和 cache 使用的物理内存大小
available 还可以被 应用程序 使用的物理内存大小
(-/+ buffers/cache)行:
(-buffers/cache): 真正使用的内存数,指的是第一部分的 used - buffers - cached
(+buffers/cache): 可用的内存数,指的是第一部分的 free + buffers + cached
Swap行指交换分区
free -th:以总和形式查看内存使用信息
free -s 2:每2s查询内存使用信息
-h:以人类可阅读形式展示
5 查看CPU
5.1 top:查看进程占用CPU、内存
top:“实时查看” ,按q退出 (实时动态显示)
- top的使用方式 top [-d number] | top [-bnp]
top 各个参数含义
top+其他按键组合(区分大小写)
top+P:以CPU使用情况排序
top+M:以内存使用情况排序
top+N:以pid排序显示
top+T:由进程使用时间累计排序显示
q:退出top命令
执行top后,各参数含义
top - 14:49:28 up 1:33, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 80 total, 2 running, 78 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1922488k total, 406936k used, 1515552k free, 11940k buffers
Swap: 835576k total, 0k used, 835576k free, 111596k cached
top显示进程各个参数信息
默认进入top时,各进程是按照CPU的占用量来排序的。
参考:
https://blog.csdn.net/JMW1407/article/details/107902100
https://blog.csdn.net/weixin_45465395/article/details/115728520