查看LINUX进程内存占⽤情况
ps aux指令詳解
linux上进程有5种状态:
1. 运⾏(正在运⾏或在运⾏队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运⾏, 进程必须等待直到有中断发⽣)
4. 僵死(进程已终⽌, 但进程描述符存在, 直到⽗进程调⽤wait4()系统调⽤后释放)
5. 停⽌(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停⽌运⾏运⾏)
1)ps a 显⽰现⾏终端机下的所有程序,包括其他⽤户的程序。
2)ps -A 显⽰所有程序。
3)ps c 列出程序时,显⽰每个程序真正的指令名称,⽽不包含路径,参数或常驻服务的标⽰。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显⽰每个程序所使⽤的环境变量。
6)ps f ⽤ASCII字符显⽰树状结构,表达程序间的相互关系。
7)ps -H 显⽰树状结构,表⽰程序间的相互关系。
8)ps -N 显⽰所有的程序,除了执⾏ps指令终端机下的程序之外。
9)ps s 采⽤程序信号的格式显⽰程序状况。
10)ps S 列出程序时,包括已中断的⼦程序资料。
11)ps -t <;终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以⽤户为主的格式来显⽰程序状况。
13)ps x 显⽰所有程序,不以终端机来区分。
14)ps -l 較⾧,較詳細的顯⽰該PID的信息
# ps -lA |more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 76 0 - 1193 109952 ? 00:00:03 init
1 S 0
2 1 0 -40 - - 0 migrat ? 00:00:0
3 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
1 S 0 4 1 0 -40 - - 0 migrat ? 00:00:0
2 migration/1
1 S 0 5 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/1
1 S 0 6 1 0 -40 - - 0 migrat ? 00:00:0
2 migration/2
1 S 0 7 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/2
相關信息的意義:
F 進程的標誌(flag),4表⽰⽤⼾為超級⽤⼾
S 進程的狀態(stat),各STAT的意義⾒下⽂
PID 進程的ID
C CPU使⽤資源的百分⽐
PRI priority(優先級)的縮寫,
NI Nice值,
ADDR 核⼼功能,指出該進程在內存的那⼀部分,如果是運⾏的進程,⼀般都是“-”
SZ ⽤掉的內存的⼤⼩
WCHAN 當前進程是否正在運⾏,若為“-”表⽰正在運⾏
TTY 登陸者的終端位置
TIME ⽤掉的CPU的時間
CMD 所執⾏的指令
# ps aux |more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4772 564 ? S Sep22 0:03 init [3]
root 2 0.0 0.0 0 0 ? S Sep22 0:03 [migration/0]
root 3 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Sep22 0:02 [migration/1]
root 5 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? Ss+ Sep22 0:02 [migration/2]
root 7 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/2]
root 8 0.0 0.0 0 0 ? S Sep22 0:00 [migration/3]
root 9 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/3]
root 10 0.0 0.0 0 0 ? S< Sep22 0:00 [migration/4]
上述各位解释:
USER 进程的属主;
PID 进程的ID;
PPID ⽗进程;
%CPU 进程占⽤的CPU百分⽐;
%MEM 占⽤内存的百分⽐;
NI 进程的NICE值,数值⼤,表⽰较少占⽤CPU时间;
VSZ 进程使⽤的虚拟內存量(KB);
RSS 该进程占⽤的固定內存量(KB)(驻留中页的数量);
TTY 该进程在那個終端上運⾏(登陸者的終端位置),若與終端無關,則顯⽰(?)。
若为pts/0等,则表⽰由⽹络连接主机进程
WCHAN 当前进程是否正在進⾏,若为-表⽰正在進⾏;
START 該進程被觸發启动时间;
TIME 該进程實際使⽤CPU運⾏的时间;
COMMAND 命令的名称和参数;
STAT狀態位常⾒的狀態字符
D ⽆法中断的休眠状态(通常 IO 的进程);
R 正在运⾏可中在队列中可过⾏的;
S 处于休眠状态;
T 停⽌或被追踪;
W 进⼊内存交换(从内核2.6开始⽆效);
X 死掉的进程(基本很少⾒);
Z 僵⼫进程;
< 优先级⾼的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有⼦进程);
l 多进程的(使⽤ CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;—————————————————————————————————————————————————————————————————————————————————————————
可以直接使⽤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进⾏排序
sort:可以实现依据不同的数据类型进⾏排序,其语法及常⽤参数格式如下:
sort [-bcfMnrtk][源⽂件][-o 输出⽂件]
补充说明:sort可针对⽂本⽂件的内容,以⾏为单位来排序。
参 数:
-b 忽略每⾏前⾯开始出的空格字符。
-c 检查⽂件是否已经按照顺序排序。
-f 排序时,忽略⼤⼩写字母。
-M 将前⾯3个字母依照⽉份的缩写进⾏排序。
-n 依照数值的⼤⼩排序。
-o<;输出⽂件> 将排序后的结果存⼊指定的⽂件。
-r 以相反的顺序来排序。
-t<;分隔字符> 指定排序时所⽤的栏位分隔字符。
-
k 选择以哪个区间进⾏排序。
1 sort的⼯作原理
sort将⽂件的每⼀⾏作为⼀个单位,相互⽐较,⽐较原则是从⾸字符向后,依次按ASCII码值进⾏⽐较,最后将他们按升序输出。
[root@gitlab ~]$
banana
apple
pear
orange
pear
[root@gitlab ~]$
apple
banana
orange
pear
pear
2 sort的-u选项
它的作⽤很简单,就是在输出⾏中去除重复⾏。
[root@gitlab ~]$ sort -
apple
banana
orange
pear
pear由于重复被-u选项⽆情的删除了。
3 sort的-r选项
[root@gitlab ~]$
1
3
5
7
11
2
4
6
10
8
9
[root@gitlab ~]$ --sort默认的排序⽅式是升序sort命令排序
1
10
11
2
3
4
5
6
7
8
9
[root@gitlab ~]$ sort - --排序程序将这些数字按字符来排序了,排序程序会先⽐较1和2,显然1⼩,所以就将10放在2前⾯
1
2
3
4
5
6
7
8
9
10
11
[root@gitlab ~]$ sort -n - --r表⽰降序,n表⽰按数字进⾏排序
11
10
9
8
7
6
5
4
3
2
1
4 sort的-o选项
由于sort默认是把结果输出到标准输出,所以需要⽤重定向才能将结果写⼊⽂件,形如sort filename > newfile。
但是,如果你想把排序结果输出到原⽂件中,⽤重定向就需要使⽤追加的⽅式。
[root@gitlab ~]$ sort -n - >
[root@gitlab ~]$
[root@gitlab ~]$
number清空了。所以我们需要使⽤-o选项,它成功的解决了这个问题,让你放⼼的将结果写⼊原⽂件。这或许也是-o⽐重定向的唯⼀优势所在。
[root@gitlab ~]$ sort -n - -
[root@gitlab ~]$
11
10
9
8
7
6
5
4
3
2
1
5 sort的-t选项和-k选项
[root@gitlab ~]$
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[root@gitlab ~]$ sort -n -k 2 -t :
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论