进程管理
  DcpJeOZ6VzTX 2023年11月02日 53 0

进程基本概述

什么是进程

比如:windows上安装的QQ,我们会将其称为QQ程序,那么当QQ运行之后,在任务管理器中,我们可以看到QQ程序在运行着,此时,我们称其为:QQ进程。

**言简意赅总结:当我们运行一个程序,那么我们将该程序叫进程 **

注意: 1.当程序运行为进程后,系统会为该进程分配内存,以及运行的身份和权限。 2.在进程运行的过程中,服务器上回有各种状态来表示当前进程的指标信息。

**进程是已启动的可执行程序的运行实例,进程有以下组成部分: ** 分配内存, 已分配内存的地址空间 安全属性, 进程的运行身份和权限 进程代码, 运行一个或多个的线程 进程状态, 进程运行后的多种状态 静态程序, 二进制文件, 静态/bin/ls, /usr/sbin/sshd 动态进程, 程序运行的过程, 有生命周期及运行状态

进程的运行环境,包括以下几个部分: 局部和全局变量 当前的调度上下文 分配给进程使用的系统资源,例如文件描述符、网络端口等 给进程分配对应的pid,ppid

程序和进程的区别

1.程序是数据和指令的集合,是一个静态的概念,比如/bin/ls、/bin/cp等二进制文件,同事程序可以长期存在系统中。 2.进程是一个程序的运行过程,是一个动态概念,进程是存在生命周期概念的,也就是说进程会随着程序的终止而销毁,不会永远在系统中存在。

进程的生命周期

进程管理_进程管理top

程序运行时进程的状态关系:

1.当父进程接收到任务调度时,会通过fork派生子进程来处理,那么子进程会集成父进程的衣钵。 2.子进程在处理任务代码时,父进程会进入等待的状态... 3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成了僵尸进程。 4.每个进程都会有自己的PID号,(process id)子进程则PPID

监控进程状态

进程状态管理命令

# ps 进程管理(静态查看)
ps 选项 参数
ps -ef
ps -aux

# 使用ps命令查看当前的进程状态(静态查看)
  常用组合:ps aux 查看进程
  a:显示所有与终端相关的进程,由终端发起的
  u:显示用户导向的用户列表
  x:显示所有与终端无关的进程
  o:自定义展示
  l:显示该进程的启动命令
[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125320  3844 ?        Ss   08:58   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    08:58   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    08:58   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   08:58   0:00 [kworker/0:0H]


USER: 启动程序的用户
PID:  进程ID
%CPU: 占用CPU的百分比
%MEM: 占用内存的百分比
VSZ:  虚拟内存集(进程占用虚拟内存的空间)
RSS:  物理内存集(进程占用物理内存的空间)
TTY:  运行的终端
        ?:      内核运行的终端
        tty1:   机器运行的终端
        pts/0:  远程连接的终端
STAT: 进程状态
       *D: 无法中断的休眠状态(通IO的进程)
       *R: 正在运行的状态
       *S: 处于休眠的状态
       *T: 暂停或被追踪的状态(如挂后台)
        W: 进入内存交换(从内核2.6开始无效)
        X: 死掉的进程(少见)
       *Z: 僵尸进程
        <: 优先级高的进程
        N: 优先级较低的进程
        L: 有些页被锁进内存
        s: 父进程(在它之下有子进程开启着)
        l: 以线程的方式运行
        |: 多进程的
       *+: 该进程运行在前台
START: 进程被触发开启的时间
TIME: 该进程实际使用CPU的运行时间
COMMAND: 命令的名称和参数
        []: 内核态  内核发起的进程
        没[]: 用户态  用户发起的进程

后台进程

# 后台被暂停的进程
jobs(查看总的后台进程)# 查看所有暂停的进程
bg 让暂停的进程运行起来,后面加数字   bg是恢复最后一个
fg 是把后台暂停的进程,放置前台运行, 后面加数字

进程管理top(动态查看)

# 第一行
top - 19:27:22 up 1:20, 2 users, loadaverage: 0.04, 0.10, 0.12
top 命令
19:27:22 当前的系统时间
up 1:20 该服务的运行时间
2 users 当前登录的用户数量
load average: 0.04, 0.10, 0.12 系统的平均负载
0.04 1分钟前
0.10 5分钟
0.12 15分钟前

# 第二行
Tasks: 100 total, 2 running, 94sleeping, 4 stopped, 0 zombie
100 total 当前系统中所有的进程数量
2 running 当前系统中所有的运行状态的进程数量
94 sleeping 当前系统中所有的睡眠状态的进程数量
4 stopped 当前系统中所有的暂停状态的进程数量
0 zombie 当前系统中所有的僵尸状态的进程数量

# 第三行 cpu的百分比
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us 用户进程占用的cpu百分比
sy 系统进程占用的cpu百分比
ni 优先级较高的进程占用cpu的百分比
id cpu的空闲程度
wa 等待状态的进程占用cpu百分比
hi 硬中断占用cpu的百分比
si 软中断占用cpu的百分比
st 虚拟化技术占用cpu的百分比

# 第四行 物理内存
KiB Mem : 995896 total, 304136 free,142004 used, 549756 buff/cache
995896 total 总内存数
304136 free 空闲内存
142004 used 已使用内存
549756 buff/cache buffer缓冲区/缓冲区

# 第五行 虚拟内存
KiB Swap: 1048572 total, 1048572 free,0 used. 678784 avail Mem
1048572 total 总虚拟内存
1048572 free 空闲虚拟内存
0 used 已使用的虚拟内存
678784 avail Mem 可用的虚拟内存数

什么是中断

中断是系统用来影响硬件设备请求的一种机制。他会打断
进程的正常调度和执行,然后调用内核中的终端处理程序
来影响设备的请求

top命令的使用

top
-d 指定刷新时间(默认3s)
-p 只查看指定pid的进程 
-u 指定相关用户 
-b 将top中的内容保存至文件中
-n 指定次数
[root@zls ~]# top -d 1
#查看指定进程的动态信息
[root@zls ~]# top -d 1 -p 10126
[root@zls ~]# top -d 1 -p 10126,1
#查看指定用户的进程
[root@zls ~]# top -d 1 -u apache
#将 2 次 top 信息写入到文件
[root@zls ~]# top -d 1 -b -n 2 > top.txt
----------------------------------------------------------------
# top常见指令 (top完直接在键盘上按)
h 查看帮助
z 高亮显示
1 查看所有cpu的负载
s 设置刷新时间
b 高亮显示处在R装态的进程
M 按内存百分比进行排序输出
P 按照cpu的百分比进行排序输出
R 对排序进行反转
f 自定义显示字段
k kill掉指定的进程
w 保存top的环境变量
q 退出
--------------------top后的标题头都是什么意意思-------------------------------
PID 进程的id号
USER 该进程的用户
PR NI 进程的优先级
VIRT 虚拟内存占用空间
RES 物理内存占用空间
SHR 共享内存占用空间
S 进程的状态
%CPU 占用cpu的百分比
%MEM 占用内存的百分比
TIME+ 运行时间
COMMAND 进程的运行命

进程的信号管理

[root@localhost ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4)SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9)
SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14)SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24)
SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35)SIGRTMIN+1 36) SIGRTMIN+2 37)SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40)
SIGRTMIN+6 41) SIGRTMIN+7 42)SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45)SIGRTMIN+11 46) SIGRTMIN+12 47)SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50)
SIGRTMAX-14 51) SIGRTMAX-13 52)SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55)
SIGRTMAX-9 56) SIGRTMAX-8 57)SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60)
SIGRTMAX-4 61) SIGRTMAX-3 62)SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX
--------------------------------------------------------------------------------
#用法:kill -数字信号 pid号
数字信号   信号别名               作用
1          HUP                 挂起信号,往往可以让进程重新配置
2          INT                 中断信号 类似ctrl+c
3          QUIT                让进程退出 结果是让进程退出
9          KILL                直接结束进程,不能被进程捕获
15         TERM                进程终止。这是默认信号
18         CONT                被暂停的进程将恢复运行 放在后台运行 bg
19         STOP                暂停进程
20         TSTP                用户停止请求,类似ctrl+z 把程序放置后台运行
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  LdhqrQVpdXd8   2023年11月02日   54   0   0 php子进程
  jnZtF7Co41Wg   2023年11月19日   20   0   0 僵尸进程python子进程