引言:
作为一名Java后端开发人员,实际项目中避免不了和Linux服务器打交道。当服务器出现运行缓慢,性能不稳定的时候,一些最基本cd
、ls
、mkdir
等命令已经不能满足我们的需求了,这时就需要使用下面介绍到的一些高级命令来解决我们的问题。掌握一些Linux高级命令,不仅对自己的技术有提升,在面试过程中也可以使自己脱颖而出。好了,废话不对说了,直接上干货。
一、top
命令:用于查看系统(服务器)整体性能
示例:
[root@localhost ~]# top
top - 16:46:15 up 10 min, 1 user, load average: 0.00, 0.03, 0.05
Tasks: 113 total, 2 running, 111 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 2.0 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1014972 total, 622504 free, 230628 used, 161840 buff/cache
KiB Swap: 839676 total, 839676 free, 0 used. 616032 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3337 rabbitmq 20 0 712908 54436 2852 S 0.3 5.4 0:02.96 beam
1 root 20 0 128032 6556 4132 S 0.0 0.6 0:01.08 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.60 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
#...此处省略
当需要排查Linux系统的时候,可以使用top
命令查看机器的整体性能,下面对各参数进行讲解:
前五行是系统整体的统计信息。
1、第一行是任务队列信息,同 uptime
命令的执行结果一样:
16:46:15
:系统当前时间;up 10 min
:系统运行时间;1 user
:当前登录用户数;load average
:系统平均负载情况,三个值分别为1分钟、5分钟、15分钟前到现在的平均值,三个数相加/3%100*,结果大于60%,说明系统负载较大;大于80%,系统可能会挂掉。
2、第二为进程相关信息:
Tasks: 113 total
:进程总数;2 running
:正在运行的进程数;111 sleeping
:睡眠的进程数;0 stopped
:停止的进程数;0 zombie
:僵尸进程数。
3、第三行为CPU相关信息,以百分比形式展示:
0.7 us
:用户占用CPU百分比;2.0 sy
:系统占用CPU百分比;97.3 id
:CPU空闲百分比,id是idle的缩写,表示空闲的意思。
4、第四行为内存信息,以KB表示:
1014972 total
:物理内存总量;622504 free
:空闲内存量;230628 used
:已使用的内存量;161840 buff/cache
:用作缓存的内存量。
5、第五行为交换区信息,以KB表示:
839676 total
:交换区总量;839676 free
:空闲交换区量;0 used
:已使用的交换区量。
6、下面的为不同进程的运行情况:
PID
:进程id;%CPU
:系统cpu使用情况,较高时影响系统性能;%MEM
:系统内存(Memory)使用情况,较高时影响系统性能;TIME+
:表示改进程运行了多长时间;COMMAND
:表示正在运行的进程名。
**注意:**使用top
命令查看系统系统运行情况后,应该使用q
正常退出,不要使用Ctrl+c
强制退出。
二、uptime
命令:也是用于查看系统整体性能,是低配版的top
命令
示例:
[root@localhost ~]# uptime
20:09:30 up 3:34, 1 user, load average: 0.01, 0.03, 0.05
只显示系统的load average
平均负载情况,该指标是衡量一个系统性能好坏最重要的因素。
三、free命令:查看内存使用情况
示例1:
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1014972 226080 618460 6988 170432 616064
Swap: 839676 0 839676
使用free
命令不带参数查看,以Byte形式显示内存使用情况;
示例2:
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 991 222 602 6 166 599
Swap: 819 0 819
使用free
命令带-m
参数查看,以MB形式显示内存使用情况;
示例3:
[root@localhost ~]# free -g
total used free shared buff/cache available
Mem: 0 0 0 0 0 0
Swap: 0 0 0
使用free
命令带-g
参数查看,以GB形式显示内存使用情况;这里之所以显示0是因为不够1GB。
说明:使用带参数查看内存使用情况最为常见,可以根据自己的需要选择使用MB为单位还是GB为单位。
四、df
命令:查看硬盘使用情况
示例1:
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 6486016 2332932 4153084 36% /
devtmpfs 495400 0 495400 0% /dev
tmpfs 507484 0 507484 0% /dev/shm
#...此处省略
使用df
命令不带参数查看,以Byte形式显示硬盘使用情况;
示例2:
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 6.2G 2.3G 4.0G 36% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
#...此处省略
使用df
命令带-h
参数查看,以人们能看懂的形式显示硬盘使用情况,h是human的简写,表示人类的意思;
五、vmstat
命令:查看系统运行情况
vmstat
命令的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,示例:
[root@localhost ~]# vmstat 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
2 0 0 618300 2108 168388 0 0 9 2 113 139 0 1 99 0 0
0 0 0 618300 2108 168388 0 0 0 0 81 125 0 0 100 0 0
0 0 0 618300 2108 168388 0 0 0 0 76 132 0 0 100 0 0
#2表示每隔两秒展示一次系统状态,3表示连续展示三次
vmstat
是最常使用的Linux/Unix监控命令,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令Linux/Unix都支持,相比top
,可以看到整个系统的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
主要参数:
us
:用户CPU使用率;sy
:系统CPU使用率;id
:CPU空闲率。
六、iostat
命令:查看系统IO使用情况
一般配合参数使用,示例:
iostat -xdk 2 3
#2表示每隔两秒展示一次系统IO的情况,3表示连续展示三次
iostat
主要用于监控系统设备的IO负载情况;
参数信息:
-x:该选项将用于显示和IO相关的扩展数据;
-d:仅显示磁盘统计信息;
-k:以KB为单位显示每秒的磁盘请求数,默认单位块。
说明:
如果遇到找不到iostat
命令的话,使用yum install sysstat
命令进行安装即可,前提是需要联网。
七、总结
以上就是当服务器运行缓慢或不稳定时,我们可以使用上述命令对系统进行检查与监控,以便及时找到问题所在。