不会这几个命令,都不好意思说自己玩过Linux

384 阅读7分钟

引言:

作为一名Java后端开发人员,实际项目中避免不了和Linux服务器打交道。当服务器出现运行缓慢,性能不稳定的时候,一些最基本cdlsmkdir等命令已经不能满足我们的需求了,这时就需要使用下面介绍到的一些高级命令来解决我们的问题。掌握一些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命令进行安装即可,前提是需要联网。

七、总结

以上就是当服务器运行缓慢或不稳定时,我们可以使用上述命令对系统进行检查与监控,以便及时找到问题所在。