查看LINUX进程内存占用情况
ps -aux命令详解
https://blog.csdn.net/x_i_y_u_e/article/details/48463623
若为pts/0等,则表示由网络连接主机进程
https://www.cnblogs.com/zxc2man/p/7458467.html
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
(1)top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle
内容解释:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
常用的命令:
P:按%CPU使用率排行 T:按MITE+排行 M:按%MEM排行
(2)pmap
可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示: $ pmap -d 14596
(3)ps
如下例所示: $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存 $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5 其中rsz为实际内存,上例实现按内存排序,由大到小
Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id
可以看到是2913,现在可以使用如下命令查看内存:
top -p 2913
这样可以动态实时的看到CPU和内存的占用率,然后按q键回到命令行
也可直接使用ps命令查看: ps -aux | grep kafka
第一个标注的地方是CPU和内存占用率,后面的943100是物理内存使用量,单位是k,此时kafka大约占用943M内存
还可以查看进程的status文件: cat /proc/2913/status
VmRSS对应的值就是物理内存占用,大约为943M和刚才一致
另外还可以通过 top 命令动态查看内存占用
通过: ps aux | sort -k4,4nr | head -n 10 查看内存占用前10名的程序
Linux下使用sort进行排序
https://blog.csdn.net/wade3015/article/details/92573738
sort:可以实现依据不同的数据类型进行排序,其语法及常用参数格式如下:
sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。
1 sort的工作原理
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[root@gitlab ~]$ cat seq.txt
banana
apple
pear
orange
pear
[root@gitlab ~]$ sort seq.txt
apple
banana
orange
pear
pear
2 sort的-u选项
它的作用很简单,就是在输出行中去除重复行。
[root@gitlab ~]$ sort -u seq.txt
apple
banana
orange
pear
pear由于重复被-u选项无情的删除了。
3 sort的-r选项
[root@gitlab ~]$ cat number.txt
1
3
5
7
11
2
4
6
10
8
9
[root@gitlab ~]$ sort number.txt --sort默认的排序方式是升序
1
10
11
2
3
4
5
6
7
8
9
[root@gitlab ~]$ sort -n number.txt --排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面
1
2
3
4
5
6
7
8
9
10
11
[root@gitlab ~]$ sort -n -r number.txt --r表示降序,n表示按数字进行排序
11
10
9
8
7
6
5
4
3
2
1
4 sort的-o选项
由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。
但是,如果你想把排序结果输出到原文件中,用重定向就需要使用追加的方式。
[root@gitlab ~]$ sort -n -r number.txt > number.txt
[root@gitlab ~]$ cat number.txt
[root@gitlab ~]$
number清空了。所以我们需要使用-o选项,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。
[root@gitlab ~]$ sort -n -r number.txt -o number.txt
[root@gitlab ~]$ cat number.txt
11
10
9
8
7
6
5
4
3
2
1
5 sort的-t选项和-k选项
[root@gitlab ~]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[root@gitlab ~]$ sort -n -k 2 -t : facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)
指定了间隔符之后,就可以用-k来指定列数了。我们使用冒号作为间隔符,并针对第二列来进行数值升序排序,结果很令人满意。
6 其他的sort常用选项
-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M会以月份来排序,比如JAN小于FEB等等
-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
________________________________________________________________________________________________________________________
sort命令:用于将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。
命令格式:
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
常见参数:
- -b 忽略每行前面开始出的空格字符。
- -c 检查文件是否已经按照顺序排序。
- -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。只考虑空格、字母和数字
- -f 排序时,将小写字母视为大写字母。
- -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。只考虑可打印字符。
- -m 将几个排序好的文件进行合并。
- -M 将前面3个字母依照月份的缩写进行排序。
- -n 依照数值的大小排序;对指定的列进行排序,+0表示第一列,以空格或制表符作为列的间隔符。
- -o<输出文件> 将排序后的结果存入指定的文件。
- -u 去重,配合-c,严格校验排序;不配合-c,则只输出一次排序结果,一般用uniq代替。
- -r 倒序(降序)以相反的顺序来排序。
- -t<分隔字符> 指定排序时所用的栏位分隔字符。例如:-t. 表示按点号分隔域,类似于awk -F或cut -d
- -k指定第几列或第几列的第几个字符。与-t配合使用
- +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
- --help 显示帮助。
- --version 显示版本信息。
测试:
去重:
[root@bqh-118 ~]# cat qc.log 192.168.43.117 192.168.43.119 192.168.43.118 192.168.43.118 192.168.43.117 192.168.43.117 192.168.43.119 192.168.43.110 [root@bqh-118 ~]# sort -u qc.log 192.168.43.110 192.168.43.117 192.168.43.118 192.168.43.119
注:-u,一般用uniq代替。
去重+降序(倒序)排序:
[root@bqh-118 ~]# sort -ur qc.log 192.168.43.119 192.168.43.118 192.168.43.117 192.168.43.110
按数字排序:
[root@bqh-118 ~]# sort -n qc.log 192.168.43.110 192.168.43.117 192.168.43.117 192.168.43.117 192.168.43.118 192.168.43.118 192.168.43.119 192.168.43.119
注:默认为升序。
按数字倒序排序
[root@bqh-118 ~]# sort -r qc.log 192.168.43.119 192.168.43.119 192.168.43.118 192.168.43.118 192.168.43.117 192.168.43.117 192.168.43.117 192.168.43.110
指定分隔符排序:按对应的列排序
-k, --key=pos1[pos2]
start a key at pos1 (orign 1), end it at pos2 (default end of line)
1. 默认按整行排序。
2. -t指定分隔符,-k1,分隔符之后的第一列排序
3. -k 1,1 用逗号来分隔字段,表示第一个字段开始排序到第一个字段结束
4. -k 1.1,3.3 用点分隔字符。表示第一个字段的第一个字符开始排序到第三个字段的第三个字符结束。
[root@bqh-118 ~]# cat qc3.log 192.168.43.117 a 192.168.43.119 d 192.168.43.118 z 192.168.43.118 n 192.168.43.117 o 192.168.43.117 m 192.168.43.119 k 192.168.43.110 l [root@bqh-118 ~]# sort -t" " -k2 qc3.log 192.168.43.117 a 192.168.43.119 d 192.168.43.119 k 192.168.43.110 l 192.168.43.117 m 192.168.43.118 n 192.168.43.117 o 192.168.43.118 z
[root@bqh-118 ~]# sort -k2 qc3.log
192.168.43.117 a
192.168.43.119 d
192.168.43.119 k
192.168.43.110 l
192.168.43.117 m
192.168.43.118 n
192.168.43.117 o
192.168.43.118 z
注:分隔符默认为空格,-t可省略,所有上边命令可以sort -k2 qc3.log
[root@bqh-118 ~]# cat qc4.log 192.168.0.1 00:OF:AF:45:4C:78 192.168.0.71 00:OF:1AF:45:4C:76 192.168.0.16 00:OF:KF:55:S6:25 192.168.0.99 00:LF:9F:R5:IC:27 192.168.0.91 00:OF:H6:45:A1:67 192.168.0.65 00:O1:W3:45:49:94 192.168.0.89 00:OF:A8:33:V5:90 192.168.0.31 00:90:32:J9:1L:14 192.168.0.19 00:OF:76:29:30:DF 192.168.0.177 00:OF:12:09:P9:41 192.168.0.121 00:YF:A2:U7:4O:RT 192.168.0.253 00:OF:SD:40:J3:19 192.168.0.51 00:II:V5:39:47:OI 192.168.0.46 00:OF:A3:81:D3:1Y 192.168.0.7 00:OI:W1:IW:H7:B1 192.168.0.189 00:OF:S5:00:12:70 192.168.0.155 00:OY:TF:4Q:46:8M [root@bqh-118 ~]# sort -t. -k4,4nr qc4.log #从第4个字段开始排序,到第4个字段结束排序,按数字降序 192.168.0.253 00:OF:SD:40:J3:19 192.168.0.189 00:OF:S5:00:12:70 192.168.0.177 00:OF:12:09:P9:41 192.168.0.155 00:OY:TF:4Q:46:8M 192.168.0.121 00:YF:A2:U7:4O:RT 192.168.0.99 00:LF:9F:R5:IC:27 192.168.0.91 00:OF:H6:45:A1:67 192.168.0.89 00:OF:A8:33:V5:90 192.168.0.71 00:OF:1AF:45:4C:76 192.168.0.65 00:O1:W3:45:49:94 192.168.0.51 00:II:V5:39:47:OI 192.168.0.46 00:OF:A3:81:D3:1Y 192.168.0.31 00:90:32:J9:1L:14 192.168.0.19 00:OF:76:29:30:DF 192.168.0.16 00:OF:KF:55:S6:25 192.168.0.7 00:OI:W1:IW:H7:B1 192.168.0.1 00:OF:AF:45:4C:78 [root@bqh-118 ~]# sort -t. -k3.1,4.1nr qc4.log #从第三个字段第一个字符排序,到第四个字段第一个字符结束,按数字降序 192.168.0.91 00:OF:H6:45:A1:67 192.168.0.99 00:LF:9F:R5:IC:27 192.168.0.89 00:OF:A8:33:V5:90 192.168.0.7 00:OI:W1:IW:H7:B1 192.168.0.71 00:OF:1AF:45:4C:76 192.168.0.65 00:O1:W3:45:49:94 192.168.0.51 00:II:V5:39:47:OI 192.168.0.46 00:OF:A3:81:D3:1Y 192.168.0.31 00:90:32:J9:1L:14 192.168.0.253 00:OF:SD:40:J3:19 192.168.0.1 00:OF:AF:45:4C:78 192.168.0.121 00:YF:A2:U7:4O:RT 192.168.0.155 00:OY:TF:4Q:46:8M 192.168.0.16 00:OF:KF:55:S6:25 192.168.0.177 00:OF:12:09:P9:41 192.168.0.189 00:OF:S5:00:12:70 192.168.0.19 00:OF:76:29:30:DF