• Linux常用命令


    netstat:显示网络信息

    # 或--tcp 显示TCP传输协议的连线状况
    netstat -t
    
    # 或--udp 显示UDP传输协议的连线状况
    netstat -u
    
    # 只显示监听端口
    netstat -l   
    
    # 以数字形式显示地址和端口号
    netstat -n
    
    # 显示正在使用Socket的程序识别码和程序名称。
    netstat -p
    
    # 列出所有 TCP 监听服务器端口
    netstat -tlnp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    top:动态监测CPU信息

    查看系统和进程的整体信息。

    常用参数

    1. -b 批次模式运行,通常用来将top的输出结果传送给其他程式或储存成文件。
    2. -d 指定每两次屏幕信息刷新之间的时间间隔。可以使用s交互命令来改变之。
    3. -p 监控指定进程。监控多个进程时,进程ID之间以逗号分隔,只能在命令行下使用。
    4. -q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
    5. -S 指定累计模式
    6. -s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
    7. -i 使top不显示任何闲置或者僵死进程。
    8. -c 显示整个命令行而不只是显示命令名
    9. -n top命令运行n次,一般与-b搭配使用
    10. -H 显示线程,当这个设定开启时, 将显示所有进程产生的线程。
    11. -I 显示空闲的进程。
    # 可以单独查看某个进程的信息
    top -p pid
    
    # 显示一个进程中各个线程CPU的占用率
    top -p pid -H
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们通过 top 命令的整体信息部分,就可以判断服务器的健康状态。如果 1 分钟、5 分钟、15分钟的平均负载高于CPU核数,说明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。

    如果一个总核数=8核心的CPU,理论上平均负载达到16,也还可以坚持很长一段时间。

    如果1分钟、5分钟以及15分钟全部超过CPU的总核心数(必须引起警觉),这个时候就要查看底部的进程信息了。


    执行top命令,前面几行信息如下所示:

    top - 15:28:10 up 141 days,  3:52,  1 user,  load average: 0.01, 0.02, 0.05
    Tasks:  90 total,   1 running,  89 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.5 us,  0.3 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  3879592 total,   123704 free,  2393532 used,  1362356 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   999516 avail Mem 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第一行:系统负载情况

    top - 15:28:10 up 141 days,  3:52,  1 user,  load average: 0.01, 0.02, 0.05
    
    • 1
    Tasks: 90 total系统中的进程总数
    1 running正在运行的进程数
    89 sleeping睡眠的进程数
    0 stopped正在停止的进程数
    0 zombie僵尸进程数。如果不是 0,则需要手工检查僵尸进程

    第二行:系统进程情况

    Tasks:  90 total,   1 running,  89 sleeping,   0 stopped,   0 zombie
    
    • 1
    内容说明
    15:28:10系统当前时间
    up 141 days系统的运行时间.本机己经运行141天了
    1 user当前登录了1个用户
    load average: 0.01, 0.02, 0.05系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载

    第三行:系统CPU使用情况

    %Cpu(s):  0.5 us,  0.3 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    
    • 1

    如果多个CPU,想查看每一核心分别的负载情况,在top命令下,按数字键"1"可以切换查看

    %Cpu0  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu1  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    
    • 1
    • 2
    内容说明
    %Cpu(s): 0.5 us用户模式占用的 CPU 百分比
    0.3 sy系统模式占用的 CPU 百分比
    0.0 ni改变过优先级的用户进程占用的 CPU 百分比
    99.2 ididle缩写,空闲 CPU 占用的 CPU 百分比
    0.0 wa等待输入/输出的进程占用的 CPU 百分比
    0.0 hi硬中断请求服务占用的 CPU 百分比
    0.0 si软中断请求服务占用的 CPU 百分比
    0.0 stst(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

    第四行:系统物理内存使用情况

    KiB Mem :  3879592 total,   123704 free,  2393532 used,  1362356 buff/cache
    
    • 1
    内容说明
    KiB Mem : 3879592 total物理内存的总量,单位为KB
    123704 free空闲的物理内存数量
    2393532 used己经使用的物理内存数量
    1362356 buff/cache作为缓冲的内存数量

    第五行:swap交换分区内存

    KiB Swap:        0 total,        0 free,        0 used.   999516 avail Mem 
    
    • 1

    在Linux操作系统分区时,最少需要3个分区:

    /boot分区 : 系统分区

    swap交换分区 :一般情况下为内存的1~2倍,但是尽量不要超过2G

    /分区 :根分区,所有文件都存放于此。

    swap分区:就是当计算机的内存不足时,系统会自动从硬盘中划出一块区域充当内存使用。

    内容说明
    KiB Swap: 0 total交换分区(虚拟内存)的总大小
    0 free空闲交换分区的大小
    0 used已经使用的交换分区的大小
    999516 avail Mem可用内存

    系统的进程信息

      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                          
     6389 root      20   0 3689916 807876   9668 S   0.3 20.8 640:00.33 java                                                                                                                             
    15839 mysql     20   0 1883872 504880  11036 S   0.3 13.0 986:28.58 mysqld                                                                                                                           
    16120 root      20   0 3586412 310108   8816 S   0.3  8.0 203:50.93 java   
    ......
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    PID进程的ID
    USER该进程所属的用户
    PR优先级,数值越小优先级越高
    NINICE优先级,数值越小优先级越高,取值范围-20到19,默认都是0
    VIRT该进程使用的虚拟内存的大小,单位为KB
    RES该进程使用的物理内存的大小,单位为KB
    SHR共享内存大小,单位为KB。计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
    S进程状态。其中S 表示睡眠,R 表示运行
    %CPU该进程占用CPU的百分比
    %MEM该进程占用内存的百分比
    TIME+该进程共占用的CPU时间
    COMMAND进程名

    top命令下,交互操作快捷键P(大写),表示将结果按照CPU使用率从高到低进行降序排列。

    使用交互快捷键M(大写):表示将结果按照内存(MEM)从高到低进行降序排列。

    按键盘上的q可以退出top命令。


    free:查看物理内存使用情况

    # free [选项]
    -m : 用M显示内容使用情况
    -h :显示带单位(MB或者GB)易读格式
    
    命令默认的显示单位是KByte
    
    • 1
    • 2
    • 3
    • 4
    • 5

    无参数

    [root@hecs-169625 ~]# free
                  total        used        free      shared  buff/cache   available
    Mem:        3879592     2393336      129408      189144     1356848     1007904
    Swap:             0           0           0
    
    • 1
    • 2
    • 3
    • 4

    用M显示内容使用情况

    [root@hecs-169625 ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3788        2337         126         184        1325         984
    Swap:             0           0           0
    
    • 1
    • 2
    • 3
    • 4

    显示带单位(MB或者GB)易读格式

    [root@hecs-169625 ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           3.7G        2.3G        126M        184M        1.3G        984M
    Swap:            0B          0B          0B
    
    • 1
    • 2
    • 3
    • 4

    df:查看磁盘剩余空间

    # df [选项]
    -h :以较高的可读性显示磁盘剩余空间大小
    
    # df -h => 显示磁盘剩余空间大小
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    举例说明:

    [root@hecs-169625 ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        1.9G     0  1.9G   0% /dev
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    tmpfs           1.9G  185M  1.7G  10% /run
    tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/vda1        40G  7.3G   30G  20% /
    tmpfs           379M     0  379M   0% /run/user/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    具体参数如下:

    Filesystem磁盘名称
    Size总大小
    Used被使用的大小
    Avail剩余大小
    Use%使用百分比
    Mounted on挂载路径(相当于Windows 的磁盘符)

    ps:查看系统进程信息

    top 动态查看系统进程的信息(每隔3s切换一次)

    ps 静态查看系统进程的信息(只能查询运行ps命令瞬间,系统的进程信息)

    # ps [选项]
    选项说明:
    	-e : 等价于"A" 表示列出全部(all)的进程
    	-f : 表示full 显示全部的列(显示全字段)
    
    # ps -ef  => 显示当前系统所有进程信息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ps 进程标题解释

    [root@hecs-169625 ~]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 Jul02 ?        00:14:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root         2     0  0 Jul02 ?        00:00:00 [kthreadd]
    ......
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    UID该进程执行的用户ID
    PID进程ID
    PPID该进程的父级进程ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID)
    CCpu的占用率,其形式是百分数
    STIME进程的启动时间
    TTY终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起
    TIME进程实际使用CPU的时间
    CMD该进程的名称或者对应的路径

    ps auxps -ef 命令的一种补充

    [root@hecs-169625 ~]# ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0 125520  3336 ?        Ss   Jul02  14:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root         2  0.0  0.0      0     0 ?        S    Jul02   0:00 [kthreadd]
    ......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    USER该 process 属于哪个使用者账号
    PID该 process 的ID
    %CPU该 process 使用掉的 CPU 资源百分比
    %MEM该 process 所占用的物理内存百分比
    VSZ该 process 使用掉的虚拟内存量 (Kbytes)
    RSS该 process 占用的固定的内存量 (Kbytes)
    TTY该 process 是在哪个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    STAT该程序目前的状态,主要的状态有 R:该程序目前正在运作,或者是可被运作。S:该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。T:该程序目前正在侦测或者是停止了。Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    START该 process 被触发启动的时间
    TIME该 process 实际使用 CPU 运作的时间
    COMMAND该程序的实际指令

    kill:结束进程

    kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。


    根据PID编号结束进程

    # kill [选项] PID进程编号
    选项说明:
    	-9 :杀死进程,即强制结束进程。
    	-15 :正常结束进程,是 kill 命令的默认信号。
    	经验:kill经常结合ps命令一起使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    qt之网络检测
    LeetCode 953. Verifying an Alien Dictionary
    摸鱼网站分享,别再上班无聊等下班
    Linux之软连接和硬连接的用法和区别【详细!!!】
    PSCA电源控制集成之分布式PPU
    前端常见面试题总结
    快速入门安装及使用&git与svn的区别&常用命令
    【计算机组成原理】第二章单元测试
    Docker和Docker compose的安装使用指南
    思腾云计算
  • 原文地址:https://blog.csdn.net/lizc_lizc/article/details/134510826