命令

作者: asdf____ | 来源:发表于2020-04-17 20:36 被阅读0次
    uniq:
    uniq 命令只过滤相邻的重复行,如果要去掉所有重复行,需要先排序,或者使用uniq -u
    例子:
    $ cat tmp.txt
    aa
    aa
    bb
    bb
    bb
    cc
    cc
    aa
    cc
    bb
    
    $ cat tmp.txt | sort | uniq
    aa
    bb
    cc
    
    $ cat tmp.txt | uniq -u
    aa
    cc
    bb
    
    free:
    free [参数]:查看系统的内存使用和空闲情况。
    参数:-b、-k、-m、-g,分别表示以 byte、kb、Mb、Gb 单位输出,-s <间隔秒数>,指定输出时间间隔。
    例子:
    $ free -m
                 total       used       free     shared    buffers     cached
    Mem:          1000        855        145          0         28        296
    -/+ buffers/cache:        530        470
    Swap:         2015          0       2015
    列输出:
    数值单位均为 M
    totel: 物理内存的总大小
    used:  已经使用的物理内存大小
    free:  空闲的物理内存大小
    shared:多个进程共享的内存总大小
    buffers:Buffer Cache 的内存大小
    cached:Page Cache 的内存大小
    行输出:
    (1)Mem: 物理内存使用情况,根据该行可以得到:物理内存的总大小(totel) = 已经使用的物理内存(used) + 空闲的物理内存(free)
    (2)-/+ buffers/cache: 分为两部分看,- 代表都减去,+ 代表都加上
    -buffers/cache: - 时,只看 used 列的值,已经使用的物理内存大小 = Mem 行中 used - buffers - cache,可能有细微差别,可忽略。
    +buffers/cache: + 时,只看 free 列的值,空闲的物理内存大小 = Mem 行中 free + buffers + cache,可能有细微差别,可忽略。
    详细解释:
    第一行 Mem 输出是按照系统角度来看内存的使用情况,此时 buffers 和 cached 均被认为是使用了的内存,因为这两部分内存已经被
    分配了。
    第二行按照应用进程的角度来看内存的使用情况,此时 buffers 和 cached 均被认为是可以使用的内存,因为它们可以缓存应用进程的
    数据,提升读写 IO 的性能。
    因此第二行的 used 才是实际上应用进程使用了的内存大小,free 才是空闲的内存大小。 
    (3)Swap: Swap 空间的内存使用情况,根据该行可以得到:Swap 空间的总大小(totel) = 已经使用的 Swap 空间大小(used) + 空闲的 Swap 空间大小(free)
    
    补充相关知识:
    Linux 系统为了高效读写,设计实现了两种 Cache:Buffer Cache 和 Page Cache,前者针对磁盘块的读写,后者针对文件
    的读写,这些 Cache 能有效缩短了 I/O 系统调用(比如read、write)的时间。
    
    vmstat:
    vmstat delay count: 查看机器的 CPU、Memory、进程、Swap 空间的使用情况以及 IO 的读写情况。
    参数:delay 代表每 delay 秒刷新一次,count 代表共刷新 count 次,当不指定次数时会每 delay 秒输出一次并一直输出
    -S:使用指定单位显示,参数有 k 、K 、m 、M ,分别代表 1000 byte、Kb、1000000 byte、Mb,默认单位为 Kb。
    例子
    $ vmstat 2 1
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
     1  0      0 3498472 315836 3819540    0    0     0     1    2    0  0  0 100  0
    procs:
        r:运行队列中的进程数量,包括正在执行和等待 CPU 资源的进程个数,当这个值超过了 CPU 个数时说明 CPU 资源不足
        b:正在等待 IO 操作返回而阻塞的进程数量
    memory:
        swpd:已经使用的 Swap 空间大小,如果大于 0 ,说明物理内存吃紧不够用了
        free:空闲的内存大小
        buff:Buffer Cache 的内存大小
        cache:Page Cache 的内存大小
    swap:
        si:每秒从 Swap 空间换入的内存大小
        so:每秒换出到 Swap 空间的内存大小,如果这两个值大于 0,说明在发生 Swap 换入换出,表示物理内存吃紧不够用了
    io:
        bi:每秒从块设备接收到的块数,即读块设备。
        bo:每秒发送到块设备的块数,即写块设备,bi 和 bo一般都要接近 0,不然就是 IO 过于频繁,需要调整
    system:
        in:系统每秒中断次数,包括时钟中断
        cs:CPU 每秒上下文切换的次数,也就是用户态和内核态之间的转换
    cpu:
        us:即 user,用户态进程执行消耗的 CPU 时间,百分比表示
        sy:即 sys,内核态进程执行消耗的 CPU 时间,百分比表示
        id:即 idle,CPU 空闲时间,包括 IO 等待时间,百分比表示,一般来说,us + sy + id = 100
        wa:即 wait,IO 等待时间,百分比表示
    
    pmap:查看进程内每个内存映像的相关信息,比如占用的虚拟内存大小、驻留内存大小、映像文件等。
    内存映像也就是进程内哪些内存地址分配了对象,以及整个对象占用大小、映像文件等信息。
    pmap [参数] pid
    参数:
    -x:增加一个标题行,同时显示每个内存映像的驻留内存,以及脏页的大小,单位为 Kb
    -d:增加一个标题行,同时显示内存映射文件的偏移值,以及存储设备的主次设备号等附加信息
    例子:
    $ pmap -x 1936                    
    Address   Kbytes     RSS     Mode     Mapping
    00934000      88      88     - r-x--  ld-2.3.4.so
    0094a000       4       4     - r----  ld-2.3.4.so
    0094b000       4       4     - rw---  ld-2.3.4.so
    0094e000    1188    1100     - r-x--  libc-2.3.4.so
    00a7b000       8       8     - rw---  [ anon ]
    bffee000      72      72     - rw---  [ stack ]
    Address:内存映像的虚拟空间起始地址
    Kbytes:内存映像大小,也就是占用的虚拟内存大小
    RSS:驻留内存大小
    Dirty:脏页大小
    Mode:读写访问权限
    Mapping: 内存映像文件,可能为实际的文件名,[anon] 为已分配内存,[stack] 为程序堆栈
    Offset:内存映像文件偏移值
    Device:存储设备的主次设备号
    

    相关文章

      网友评论

          本文标题:命令

          本文链接:https://www.haomeiwen.com/subject/ttsuvhtx.html