linux ps查看进程、free查看内存

1、进程基本介绍

进程id:PID(process id),父进程PPID

 

进程标志:process flag,说明进程的权限,常见4表示权限为root,1表示只可复制无法执行

 

进程状态:stat,说明进程的状态,主要的状态有:

R(running):正在运行中

S(sleep):睡眠状态但可被唤醒

D:不可被唤醒的睡眠状态,通常可能在等待I/O

T(stop):停止状态,可能是在工作控制(后台暂停)或除错(traced)状态

Z(zombie):僵尸状态,进程已经终止但是无法从内存中删除

 

进程优先级:表示进程的优先执行顺序,值越小越优先

PRI(priority):PRI的值是由内核动态调整的,用户无法直接调整PRI

NI(nice):范围为-20~19,root可随意调整自身和普通用户的nice值,但普通用户只能调整自己的nice值,范围为0~19,且只能调大nice值

进程实际的优先级为系统PRI+NI

 

2.ps查看进程状态

ps是查看某个时刻进程的运行情况,是一个静态结果,常用的有ps -ef、ps aux和ps -l。

ps -ef和ps aux(与ps -aux结果一致)

[root@centos7-2 ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  2 20:50 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 20:50 ?        00:00:00 [kthreadd]
root          3      2  0 20:50 ?        00:00:00 [ksoftirqd/0]
root          4      2  0 20:50 ?        00:00:00 [kworker/0:0]
……
[root@centos7-2 ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  1.2  0.3 128148  6820 ?        Ss   20:50   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    20:50   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    20:50   0:00 [ksoftirqd/0]
root          4  0.0  0.0      0     0 ?        S    20:50   0:00 [kworker/0:0]
……

ps -ef和ps aux显示的结果数一致,只是显示的格式不同,前者是以标准格式显示,而后者是以BSD格式显示。

ps -ef各列的含义:UID(实际输出用户名)、PID、PPID、占用CPU百分比、进程开始时间、进程在哪个终端上运行、进程实际使用CPU总时间、命令

ps aux格列含义:用户名、PID、占用CPU百分比、占用物理内存百分比、使用虚拟内存量(KB)、使用固定内存量(KB)、进程在哪个终端上运行、进程状态、进程开始时间、进程实际使用CPU总时间、命令。

 

ps -l,仅查看自己的bash相关进程

[root@centos7-2 ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  12197  12190  0  80   0 - 29023 do_wai pts/0    00:00:00 bash
0 R     0  12242  12197  0  80   0 - 38300 -      pts/0    00:00:00 ps

 

3.top动态查看进程

ps是某一个时刻进程的状态,而top可以持续监测进程的状态、

语法:top [-d 数字]  [-bnp]

-d:后面接秒数,表示整个结果几秒更新一次,省略的话centos7默认3秒更新一次

-b:以批次的方式执行top,通常搭配数据流重定向来将批处理的结果输出成为文件 

 -n:同行与-b搭配,表示需要进行几次top的结果输出

-p:后跟pid,表示查看某个pid的进程状态

top执行时可输入的命令:

  • P:以占用CPU百分比排序,为默认排序方式
  • M:以占用物理内存备份比排序
  • N:以PID排序
  • T:以进程实际使用CPU总时间
  • q:终止top运行
[root@centos7-2 linux]# cat a.txt 
top - 15:50:59 up  7:04,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 201 total,   1 running, 200 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.7 us,  8.1 sy,  0.0 ni, 89.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1865308 total,   409948 free,   803384 used,   651976 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   822864 avail Mem 
#此处为空行
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 18213 root      20   0  161972   2132   1520 R  12.5  0.1   0:00.02 top
     1 root      20   0  128148   6832   4124 S   0.0  0.4   0:03.33 systemd
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.13 ksoftirqd/0
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.09 migration/0
     ……

top行各字段:当前时间、开机到当前经过的时间(h)、登录系统用户数、系统在1、5、15分钟的平均工作量

Tasks行:总进程数量以及各个状态的进程数量,通常需要注意是否有zombie进程

%Cpu:CPU的负载情况,wa是I/Owait

KiB Mem:物理内存使用情况

KiB Swap:虚拟内存使用情况,swap的使用应该尽量少

 

top常用示例:

top -d 2 -p 1800:查看pid为1800的进程状态,每2秒刷新一次结果

top -b -n 5 > /tmp/top.txt:将top命令执行5次,将结果输出至/tmp下的top.txt文件中

 

4.pstree查看进程树

语法:pstree [-A|U] [-up]

-A:各进程树之间以ASCII字符来连接

-U:各进程树之间以utf-8的字符来连接

-u:列出每个进程的所属用户

-p:列出每个进程的pid

[root@centos7-2 linux]# pstree -up 
systemd(1)-+-ModemManager(687)-+-{ModemManager}(706)
           |                   `-{ModemManager}(727)
           |-NetworkManager(730)-+-{NetworkManager}(765)
           |                     `-{NetworkManager}(771)
           |-VGAuthService(686)
           |-abrt-watch-log(693)
           |-abrt-watch-log(695)
           |-abrtd(691)
           |-accounts-daemon(690)-+-{accounts-daemon}(705)
           |                      `-{accounts-daemon}(728)
……

 

5.kill进程管理

语法:kill -signal pid,常用signal

1 sighup 启动被终止的进程,让该pid的进程重新读取自己的配置文件,类似重启进程

2 sigint 相当于用键盘输入ctrl+c来中断一个进程的进行

9 sigkill 强制中断一个进程的进行,可能会产生中间文件

15 sigterm 以正常的结束进程来终止该进程,

17 sigstop 相当于用键盘输入Ctrl+z来暂停一个进程的执行

常用kill -9 pid来强制终止一个进程

 

6.free查看内存

free 加参数-b/k/m/g,以b、k、m、g的大小显示结果,默认以k显示

[root@oldboy ~]# free
             total        used       free     shared    buffers     cached
Mem:        1915520      937036     978484      0        141288     483800
-/+ buffers/cache:       311948     1603572
Swap:       2097144        0        2097144

第一行的mem used表示分配出去(可能已分配但未使用)的buffers和buffer,free表示未分配的,buffers和cached表示当前空闲的值

第二行的buffers和cache used表示实际使用的,free表示可以潜在被用作buffers和cache的值

mem used=buffers/cached used+buffers+cached,即937036=311948+141288+483800

buffers/cache free=mem(free+buffers+cache)即,1603572=978484+141288+483800,也即mem total-buffers/cached used=1915520-311948

 

posted @ 2018-10-02 17:31  Forever77  阅读(806)  评论(0编辑  收藏  举报