命令

2020-04-17  本文已影响0人  asdf____
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:存储设备的主次设备号
上一篇 下一篇

猜你喜欢

热点阅读