前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中的几个命令--top、free、uniq

Linux中的几个命令--top、free、uniq

作者头像
AsiaYe
发布2019-11-06 16:29:23
2.8K0
发布2019-11-06 16:29:23
举报
文章被收录于专栏:DBA随笔DBA随笔
Linux中的几个命令
01

关于top命令的详解

Linux top命令用于实时显示 process 的动态,当我们在命令框中敲入top命令然后回车之后,可以看到如下输出:

代码语言:javascript
复制
top - :: up  days,  :,  users,  load average: ., ., .
Tasks:  total,    running,  sleeping,    stopped,    zombie
Cpu(s):  5.9%us,  .%sy,  .%ni, 93.7%id,  .%wa,  .%hi,  .%si,  .%st
Mem:  k total, k used,   k free,   k buffers
Swap:  k total,   k used,  k free,  k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                           
  mysql         m 1.1g  m S 39.8  4.5  : mysqld                                                                             
  cassandr      m 4.5g m S  4.6 19.2  : java                                                                               
 root          m m  S  3.0  . :40.27 filebeat                                                                           
 mysql         m m  m S  1.3  2.8   : mysqld                                                                             
 mysql         m m  m S  .  2.2 :59.41 mysqld                                                                             
 dba_mysq       m    S  .  .   :. sshd                                                                               
 dba_mysq          R  .  .   :. top                                                                                
 mysql         m 1.3g  m S  .  5.4   : mysqld                                                                             
 mysql         m 1.4g  m S  .  5.9   : mysqld                                                                             
     root              S  .  .   :11.38 init                                                                               
     root                       S  .  .   :. kthreadd                                                                           
     root      RT                 S  .  .   :56.87 migration/                                                                        
     root                       S  .  .  :32.83 ksoftirqd/                                                                        
     root      RT                 S  .  .   :. stopper/                                                                          

它显示的是进程的状态,并且每5s更新一次,类似watch命令一样,对结果会刷新。下面是它的命令参数:

PID: 进程描述符 USER: 进程的拥有者 PRI:进程的优先级 NI: nice level

VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存 1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存 1、除了自身进程的共享内存,也包括其他进程的共享内存 2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小 3、计算某个进程所占的物理内存大小公式:RES – SHR 4、swap out后,它将会降下来

S:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。 %CPU: CPU使用率 %MEM: 物理内存的使用 TIME: 进程占用的总共cpu时间 COMMAND:进程的命令

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下: s – 改变画面更新频率 l – 关闭或开启第一部分第一行 top 信息的表示 t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示 m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示 N – 以 PID 的大小的顺序排列表示进程列表 P – 以 CPU 占用率大小的顺序排列进程列表 M – 以内存占用率大小的顺序排列进程列表 h – 显示帮助 n – 设置在进程列表所显示进程的数量 q – 退出 top

A: 根据单窗口切换成多窗口,可以看到四个不同的窗口,可以通过a或者w来切换多个窗口。 四个窗口的名字分别为:Def,Job,Mem,Usr

f:进入一个动态配置top的screen中,可以根据自己的喜好配置top

o:对top的现有配置排序(order)

r:使用renice命令

k:使用kill命令

i:使top不显示任何闲置或者僵死进程。

c:显示整个命令行而不只是显示命令名。

top的命令行使用方式

(1) 批量处理模式

代码语言:javascript
复制
$ top -b

加上-b后,top显示的时候,将每一次显示的结果都打印出来,不会将上一次的结果给冲掉。

(2) 显示某个进程的信息

代码语言:javascript
复制
$ top -p pid

如果是多个进程,只要如下:

代码语言:javascript
复制
$ top -p pid1,pid2,pid3

(3) 显示某个用户的进程信息

代码语言:javascript
复制
$ top -u username

(4) 显示线程的信息,而不是进程的信息

代码语言:javascript
复制
$ top -H

(5) 设置刷屏的时间(单位为s)

代码语言:javascript
复制
$ top -d ntime

02

free命令

1.命令格式:

free [参数]

2.命令功能:

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

3.命令参数:

-b  以Byte为单位显示内存使用情况。

-k  以KB为单位显示内存使用情况。

-m  以MB为单位显示内存使用情况。

-g 以GB为单位显示内存使用情况。

-o  不显示缓冲区调节列。

-s<间隔秒数>  持续观察内存使用状况。

-t  显示内存总和列。

-V  显示版本信息

下面给出相关示例:

代码语言:javascript
复制
#简单参数介绍
[dba_mysql@tk-dba-mysql-194 ~]$ free -G
free: invalid option -- 'G'
usage: free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]
  -b,-k,-m,-g show output in bytes, KB, MB, or GB
  -h human readable output (automatic unit scaling)
  -l show detailed low and high memory statistics
  -o use old format (no -/+buffers/cache line)
  -t display total for RAM + swap
  -s update every [delay] seconds
  -c update [count] times
  -a show available memory if exported by kernel (> characters per line)
  -V display version information and exit
#以b为单位来显示空闲内存情况
[dba_mysql@tk-dba-mysql-194 ~]$ free -b
             total       used       free     shared    buffers     cached
Mem:               
-/+ buffers/cache:  
Swap:      
#以kb为单位来显示空闲内存情况
[dba_mysql@tk-dba-mysql-194 ~]$ free -k
             total       used       free     shared    buffers     cached
Mem:                               
-/+ buffers/cache:       
Swap:               
#以Mb为单位来显示空闲内存情况
[dba_mysql@tk-dba-mysql-194 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:                                                
-/+ buffers/cache:             
Swap:                        
#以GB为单位来显示空闲内存情况
[dba_mysql@tk-dba-mysql-194 ~]$ free -g
             total       used       free     shared    buffers     cached
Mem:                                                             
-/+ buffers/cache:                   
Swap:                                
#每3秒显示空闲内存情况
[dba_mysql@tk-dba-mysql-194 ~]$ free -s 
             total       used       free     shared    buffers     cached
Mem:                               
-/+ buffers/cache:       
Swap:               

             total       used       free     shared    buffers     cached
Mem:                               
-/+ buffers/cache:       
Swap:               

^C
#显示total行
[dba_mysql@tk-dba-mysql-194 ~]$ free -mt
             total       used       free     shared    buffers     cached
Mem:                                                
-/+ buffers/cache:             
Swap:                        
Total:                    

03

uniq命令

Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。uniq 可检查文本文件中重复出现的行列。这个命令的用法比较简单,这里只给出相关的实例,相关的注释在例子中有:

代码语言:javascript
复制
#首先我们创建一个文件,文件的内容如下:
[dba_mysql ~]$ cat yeyz.lst 
test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85  
Linux 85 

#使用uniq命令进行处理,我们发现重复的记录被去除了
[dba_mysql ~]$ uniq yeyz.lst 
test 30  
Hello 95  
Linux 85  
Linux 85 

#使用uniq -c参数,我们可以发现每一行记录前面统计出来了具体的重复行数
[dba_mysql ~]$ uniq -c yeyz.lst 
      3 test 30  
      4 Hello 95  
      1 Linux 85  
      1 Linux 85 
[dba_mysql ~]$ 

#再创建一个文件yeyz.lst2文件,这个文件的不同之处是记录是乱序的。
[dba_mysql ~]$ cat yeyz.lst2
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 

#我们使用uniq命令,发现输出的结果并没有进行去重
[dba_mysql ~]$ uniq yeyz.lst2
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 

#想要进行去重,我们必须使用sort命令对这些记录先进行排序,然后再使用去重的方法
[dba_mysql ~]$ sort yeyz.lst2
Hello 95  
Hello 95  
Hello 95  
Linux 85 
Linux 85 
Linux 85 
test 30  
test 30  
test 30  

#再次去重,我们发现还是不能出现正确的结果,原因是sort并没有改变yeyz.lst2文件本身,只是输出了排序后的结果
[dba_mysql ~]$ uniq yeyz.lst2
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 

#我们看看刚才排序和去冲过后的文件,发现他们并没有发生变化,也就证明了前文所说的。
[dba_mysql ~]$ cat yeyz.lst
test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85  
Linux 85 
[dba_mysql ~]$ cat yeyz.lst2
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 

#最后我们通过sort+uniq的命令,对文件中的内容进行了保存。
[dba_mysql ~]$ sort yeyz.lst2|uniq
Hello 95  
Linux 85 
test 30  

#当然,uniq照样可以接一个-c参数
[dba_mysql ~]$ sort yeyz.lst2|uniq -c
      3 Hello 95  
      3 Linux 85 
      3 test 30  


#如果想要保存结果,可以把它重定向到一个文件中去
[dba_mysql@tk-dba-mysql-194 ~]$ sort yeyz.lst2|uniq -c > yeyz.lst3
[dba_mysql@tk-dba-mysql-194 ~]$ cat yeyz.lst3
      3 Hello 95  
      3 Linux 85 
      3 test 30  

##注意>不要写成>>,写成>>就变成了追加。
[dba_mysql@tk-dba-mysql-194 ~]$ sort yeyz.lst2|uniq -c >> yeyz.lst3
[dba_mysql@tk-dba-mysql-194 ~]$ cat yeyz.lst3
      3 Hello 95  
      3 Linux 85 
      3 test 30  
      3 Hello 95  
      3 Linux 85 
      3 test 30  
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • top的命令行使用方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档