Linux进程管理(1)

什么是进程?

一般来说,进程是已启动并且可执行程序的运行实例,简单地说,进程就是一个正在运行的程序。

程序(program): 通常是二进制文件,为实体文件

进程(process): 是程序运行的过程, 动态,有生命周期及运行状态

进程的生命周期
在这里插入图片描述
由当前进程(父进程)克隆(fork)创建一个子进程,此时父进程调用waitpid函数开始监控父进程和子进程(wait),父进程不会消亡只是进入休眠状态,子进程开始运行(exec)。当子进程结束运行后(exit)将退出状态告知系统,在退出时,子进程已经关闭并丢弃其资源环境,剩下的部分成为僵停(或僵尸进程,Zombie),然后系统将子进程退出状态事件返回给父进程,父进程在子进程退出后被唤醒,清理剩余结构,此时内核就会从内存中释放已经结束的子进程PCB(Processing Control Block进程控制块)。

进程的状态

name decription
R运行状态(runing) 进程不一定在运行中,也可以在运行队列里
S睡眠状态(sleeping) 进程在等待事件完成(浅度睡眠,可以被唤醒)
D磁盘睡眠状态(Disk sleep) 不可中断睡眠(深度睡眠,不可以被唤醒,通常在磁盘写入时发生)
T停止状态(stopped) 可以通过发送SIGSTOP信号给进程来停止进程,可以发送SIGCONT信号让进程继续运行
X死亡状态(dead) 该状态是返回状态,在任务列表中看不到
Z僵尸状态(zombie) 子进程退出,父进程还在运行,但是父进程没有读到子进程的退出状态,子进程进入僵尸状态
T追踪或暂停状态 1、进程收到SIGSTOP信号,就会响应信号而进入TASK_STOPPED ,除非本身处于D。 再收到一个SIGCONT信号,就能恢复到TASK_RUNNING状态。2、TASK_TRACED进程被跟踪时的状态, 它会停下来,等待跟踪它的进程对其操作

查看进程

静态查看进程命令:ps
ps命令用于显示当前进程 (process) 的状态

常用参数:

-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程

aux 输出格式 :

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 127916  6488 ?        Ss   18:58   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    18:58   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    18:58   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   18:58   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    18:58   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    18:58   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    18:58   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   18:58   0:00 [lru-add-drain]

USER:运行进程的用户
PID:进程ID
%CPU:cpu占用率
%MEM:内存占用率
VSZ:占用虚拟内存
RSS:占用实际内存(驻留内存)
TTY:运行程序的终端
STAT:状态字符

  1. D 无法中断的休眠状态(通常 IO 的进程);
  2. R 正在执行中;
  3. S 处于休眠状态;
  4. T 停止或被追踪;
  5. W 进入内存交换(从内核2.6开始无效)
  6. X 死掉的进程(从来没见过);
  7. Z 僵尸进程;
  8. < 优先级高的进程;
  9. N 优先级较低的进程;
  10. L 有些页被锁进内存;
  11. s 进程的领导者(父进程);
  12. l 多进程的(克隆进程);
  13. +位于后台的的进程组;

START:进程启动时间
TIME:进程执行时间(该进程实际使用CPU运行的时间)
COMMAND:进程名称

动态查看进程命令:top
top命令用于实时显示 process 的动态

-d : 改变显示的更新速度
-q : 没有任何延迟的显示速度
-n : 更新的次数,完成后将会退出 top
top - 18:32:45 up 230 days,  2:01,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.8%us,  0.5%sy,  0.0%ni, 98.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:   3974188k total,  2811108k used,  1163080k free,   144292k buffers
Swap:  2097148k total,    46184k used,  2050964k free,   595092k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
 4478 root      20   0 3760m 669m 7808 S  1.3 17.2 195:53.36 java   
 7488 root      20   0 4799m 1.0g  13m S  1.0 26.0  30:55.04 java 
25690 root      20   0 3428m  95m 5104 S  0.7  2.5   2156:22 java   
24582 bo.wang   20   0 15024 1304 1004 R  0.3  0.0   0:00.15 top  
25741 root      20   0 3432m 109m 3404 S  0.3  2.8   2482:59 java 
    1 root      20   0 19232  220   84 S  0.0  0.0   0:01.07 init 
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd 
    3 root      RT   0     0    0    0 S  0.0  0.0   1:06.49 migration/0 
    4 root      20   0     0    0    0 S  0.0  0.0   6:10.11 ksoftirqd/0 
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0 
    6 root      RT   0     0    0    0 S  0.0  0.0   0:49.52 watchdog/0 
    7 root      RT   0     0    0    0 S  0.0  0.0   1:14.84 migration/1
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1 
    9 root      20   0     0    0    0 S  0.0  0.0   5:03.11 ksoftirqd/1 
   10 root      RT   0     0    0    0 S  0.0  0.0   0:43.21 watchdog/1 
   11 root      20   0     0    0    0 S  0.0  0.0  25:15.13 events/0  
   12 root      20   0     0    0    0 S  0.0  0.0  27:57.65 events/1    
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0  
   14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/1 
   15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/0   
   16 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/1  
   17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef
   18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef

第一行:概况

HH:mm:ss:当前的系统时间。
up xxx days, HH:mm:从本次开机到现在经过的时间。
x user:当前有几个用户登录到该机器。
load average:系统1分钟、5分钟、15分钟内的平均负载

第二行:进程数

total:进程总数
running:正在运行的进程数
sleeping:睡眠的进程数
stopped:停止的进程数
zombie:僵尸进程数

第三行:CPU使用率(%Cpu(s))

0.8%us:用户空间占用CPU百分比
0.5%sy:内核(系统)空间占用CPU百分比
0.0%ni:用户进程空间内改变过优先级的进程占用CPU百分比
98.5%id:空闲CPU百分比
0.0%wa:等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.2%st:虚拟机占用百分比

第四行:内存信息数据

total:内存总量
free:空闲内存量
used:使用中的内存量
buffers:内核缓存的内存量

第五行:交换分区的内存数据

total:交换区总量
used:使用的交换区总量
free:空闲交换区总量
cached:缓冲的交换区总量

第六行:

PID:进程ID
USER:进程所有者的用户名
PR:优先级
NI:nice值,值越低优先级越高
VIRT:进程使用的虚拟内存总量,单位kb
RES:进程使用的驻留内存,单位kb
SHR :进程使用的共享内存量,单位kb
S:进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间
COMMAND:命令名

发布了14 篇原创文章 · 获赞 3 · 访问量 665

猜你喜欢

转载自blog.csdn.net/weixin_43665682/article/details/104189583
今日推荐