- 1.查看文件命令
- 2.文件管理命令
- 3.防火墙的命令
- 4.查看进程的命令
- 5.查看日志
- 6.抓取日志
- 7.压缩命令
- 8.jps命令(显示当前系统的java进程情况,及其id号)
- 9.find命令
- 10.df,du查看磁盘的使用情况
- 11.top命令
- 12.关机重启
- 13.生产环境服务器变慢,诊断思路和性能评估谈谈?(重要)
- 14.假如生产环境出现CPU占用过高,请谈谈你的分析思路和定位
| 命令 | 作用 |
|---|---|
| vi/vim 文件名 | 以编辑模式查看,可修改 |
| cat 文件名 | 显示文件的全部内容 |
| more 文件名 | 分页显示文件内容 Space键:显示文本的下一屏内容 b:显示上一屏内容 h:帮助命令 |
| less 文件名 | 与more相似,更好的是可以往前翻页 -N显示行号 h:帮助命令 f:往后一页 b:往前一页 |
| tail 文件名 | 仅查看尾部,还可以指定行数 |
| head 文件名 | 仅查看头部,还可以指定行数 |
| 命令 | 作用 |
|---|---|
| mv | 操作用来移动文件,改名 |
| cp | 用来复制文件 -r连同文件夹一起复制 -v显示详细信息 |
| rm | 删除文件 -r删除文件夹 |
| 命令 | 作用 |
|---|---|
| service firewalld start | 开启防火墙 |
| service firewalld restart | 重启防火墙 |
| service firewalld stop | 关闭防火墙 |
| service firewalld status | 查看防火墙状态 |
| firewall-cmd --list-ports | 查看开放端口 |
| firewall-cmd --zone=public --add-port=8080/tcp --permanent | 添加端口 |
| firewall-cmd --zone=public --remove-port=8080/tcp --permanent | 关闭端口 |
| 命令 | 作用 |
|---|---|
| ps -aux|grep 服务名 | 查看某个服务进程信息 |
| ps -ef|grep 服务名 | 查看父进程 |
| kill -9 pid | 终止进程 |
tail -f 是查看日志最常用的方法,能够动态查看日志 -f 表示循环读取 -n 显示行数 tail -fn 10 文件名 每次文档更新屏幕会动态实时显示当前日志 ctr+c停止6.抓取日志
grep是必备日志分析命令
| 命令 | 作用 |
|---|---|
| grep | 强大的grep,搜日志就靠它了 |
| grep -r ‘关键字如商品ID’ *.log | 使用频率最高 |
| grep -v | 反向文本搜索 |
| grep ‘关键字如商品ID’ *.log | grep 免费商品 | 条件结果中,在加条件筛选下 |
| grep ‘关键字如商品ID’ *.log >> anan.txt | 相关日志输入到一个txt中,下载到本地慢慢看,我最喜欢 |
| grep -A 2 ‘商品ID’ *.log | 显示商品ID及后5行 |
| grep -B 2 ‘商品ID’ *.log | 显示商品ID及上5行 |
| grep -C 2 ‘商品ID’ *.log | 显示商品ID及上下5行 |
| grep ‘商品ID’ *.log --col | 高亮显示商品ID,非常醒目啊 |
| grep Aug -R /var/log/* | 在目录 ‘/var/log’ 及随后的目录中搜索字符串"Aug" |
| 压缩命令 | 作用 |
|---|---|
| tar | 对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。 -c :新建打包文件 -t :查看打包文件的内容含有哪些文件名 -x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中 -j :通过bzip2的支持进行压缩/解压缩 -z :通过gzip的支持进行压缩/解压缩 -v :在压缩/解压缩过程中,将正在处理的文件名显示出来 -f filename :filename为要处理的文件 -C dir :指定压缩/解压缩的目录dir 压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称 查询:tar -jtv -f filename.tar.bz2 解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录 |
| bunzip2 file1.bz2 | 解压一个叫做 'file1.bz2’的文件 |
| bzip2 file1 | 压缩一个叫做 ‘file1’ 的文件 |
| gunzip file1.gz | 解压一个叫做 'file1.gz’的文件 |
| gzip file1 | 压缩一个叫做 'file1’的文件 |
| gzip -9 file1 | 最大程度压缩 |
| rar a file1.rar test_file | 创建一个叫做 ‘file1.rar’ 的包 |
| rar a file1.rar file1 file2 dir1 | 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’ |
| rar x file1.rar | 解压rar包 |
| zip file1.zip file1 | 创建一个zip格式的压缩包 |
| unzip file1.zip | 解压一个zip格式压缩包 |
| zip -r file1.zip file1 file2 dir1 | 将几个文件和目录同时压缩成一个zip格式的压缩包 |
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
[root@iZ2ze5jmothsemrqjarbvqZ opt]# jps 9591 nacos-server.jar 21863 Jps9.find命令
| 命令 | 作用 |
|---|---|
| find / -name file1 | 从"/"开始进入根文件系统搜索文件和目录 |
| find / -user user1 | 搜索属于用户’user1’的文件和目录 |
| find /usr/bin -type f -atime +100 | 搜索在过去100天内未被使用过的执行文件 |
| find /usr/bin -type f -mtime -10 | 搜索在10天内被创建或者修改过的文件 |
| whereis halt | 显示一个二进制文件、源码或man的位置 |
[root@iZ2ze5jmothsemrqjarbvqZ opt]# find ./ -name test* ./test.txt [root@iZ2ze5jmothsemrqjarbvqZ opt]# find / -name test* /opt/test.txt10.df,du查看磁盘的使用情况
df 显示文件系统磁盘空间的使用情况
[root@iZ2ze5jmothsemrqjarbvqZ opt]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 930448 0 930448 0% /dev tmpfs 941000 0 941000 0% /dev/shm tmpfs 941000 688 940312 1% /run tmpfs 941000 0 941000 0% /sys/fs/cgroup /dev/vda1 41152812 9009044 30240060 23% / tmpfs 188204 0 188204 0% /run/user/1003 tmpfs 188204 0 188204 0% /run/user/1002 tmpfs 188204 0 188204 0% /run/user/0
df -h 以人类可读的方式显示Kb,Mb,GB等
[root@iZ2ze5jmothsemrqjarbvqZ opt]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 909M 0 909M 0% /dev tmpfs 919M 0 919M 0% /dev/shm tmpfs 919M 688K 919M 1% /run tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/vda1 40G 8.6G 29G 23% / tmpfs 184M 0 184M 0% /run/user/1003 tmpfs 184M 0 184M 0% /run/user/1002 tmpfs 184M 0 184M 0% /run/user/0
du 显示指定的目录及其子目录已使用的磁盘空间的总和
du -s * 显示指定目录的结构,*当前目录下显示所有
[root@iZ2ze5jmothsemrqjarbvqZ opt]# du -s * 12 containerd 4 Demo.class 139732 jdk-8u261-linux-x64.tar.gz 76160 nacos-server-1.4.2.tar.gz 15492 rabbitmq-server-3.8.16-1.el7.noarch.rpm 139048 rh 116 TestProject.jar 84 test.txt
du -h 以人类可读的方式显示
[root@iZ2ze5jmothsemrqjarbvqZ opt]# du -h 4.0K ./containerd/bin 4.0K ./containerd/lib 12K ./containerd 4.0K ./rh/devtoolset-7/root/etc/sysconfig 4.0K ./rh/devtoolset-7/root/etc/pki11.top命令
top 是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
uptime系统性能命令的精简版
shutdown -h 关机不重启 -r先关机后重启
reboot 重启
整机:top —>uptime系统性能命令的精简版
CPU:
(1)显示CPU状态
vmstat -n 采样间隔的秒数 采样次数
[root@iZ2ze5jmothsemrqjarbvqZ opt]# vmstat -n 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 94852 133212 522176 0 0 5 18 1 7 6 2 92 0 0 0 0 0 94480 133212 522160 0 0 0 2 589 1134 10 1 89 0 0 0 0 0 94460 133212 522160 0 0 0 2 664 1221 11 2 88 0 0
(2)查看所有CPU的核信息
mpstat -P ALL 2
(3)每个进程使用cpu的用量分解信息
pidstat -u 采样间隔秒数 -p 进程编号
内存:
查看内存使用情况
free -m
[root@iZ2ze5jmothsemrqjarbvqZ opt]# free -m
total used free shared buff/cache available
Mem: 1837 1106 87 0 644 547
Swap: 1024 0 1024
查看单个进程的内存使用情况
pidstat -p 进程号 -r 采样间隔秒数
磁盘
df -h 以人类可读的方式显示Kb,Mb,GB等
[root@iZ2ze5jmothsemrqjarbvqZ opt]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 909M 0 909M 0% /dev tmpfs 919M 0 919M 0% /dev/shm tmpfs 919M 688K 919M 1% /run tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/vda1 40G 8.6G 29G 23% / tmpfs 184M 0 184M 0% /run/user/1003 tmpfs 184M 0 184M 0% /run/user/1002 tmpfs 184M 0 184M 0% /run/user/0
磁盘IO:
iostat -xdk 采样间隔秒数 采样次数 主要看最后一列%util,表示一秒中有百分几的时间用于I/O操作。 接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘。
[root@iZ2ze5jmothsemrqjarbvqZ opt]# iostat -xdk 2 3 Linux 3.10.0-1160.24.1.el7.x86_64 (iZ2ze5jmothsemrqjarbvqZ) 10/07/2021 _x86_64_ (1 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.01 2.15 0.15 1.94 4.65 18.20 21.93 0.01 2.52 6.59 2.21 1.01 0.21 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 0.00 0.51 0.51 4.04 2.02 12.00 0.00 2.50 5.00 0.00 3.50 0.35 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 0.00 0.00 1.01 0.00 8.04 16.00 0.00 1.00 0.00 1.00 2.00 0.20
查看单个进程的磁盘IO
pidstat -d 采样间隔秒数 -p 进程号
[root@iZ2ze5jmothsemrqjarbvqZ opt]# pidstat -d 1 -p 9591 Linux 3.10.0-1160.24.1.el7.x86_64 (iZ2ze5jmothsemrqjarbvqZ) 10/07/2021 _x86_64_ (1 CPU) 05:08:00 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 05:08:01 PM 0 9591 0.00 0.00 0.00 java 05:08:02 PM 0 9591 0.00 0.00 0.00 java 05:08:03 PM 0 9591 0.00 0.00 0.00 java 05:08:04 PM 0 9591 0.00 0.00 0.00 java
网络IO:ifstat 1 发现网络都是0 可以排除网络 默认本地没有 需要下载ifstat
1.先用top命令找到CPU占比最高的
2.ps -ef或者jps进一步定位,得知是一个怎么样的一个后台程序
或者使用ps -ef|grep pid|grep -v grep
3.定位到具体的线程或者代码
ps -mp 进程号 -o THREAD,tid,time -m 显示所有线程 -p pid进程使用CPU的时间 -o 该参数后是用户自定义格式
4.将需要的线程ID转换为16进制格式(英文小写格式) 也可以使用计算器或者java中的
Integer.toHexString()方法等等 printf "%xn" 有问题的线程ID
5.jstack 进程ID|grep tid(16进制线程ID小写英文) -A60(打印60行)



