openEuler:进程管理

Tag: #任务管理

进程

概述

进程(process),是计算机中程序执行的实例,进程不仅包括可执行的程序代码,还包含程序的当前活动、资源和状态。
根进程通常是系统启动时的第一个进程(在Unix和Linux系统中通常是init进程或systemd进程,PID为1)。所有其他进程都是这个根进程或其后代的子进程。
有一些特定的进程,它们的父进程ID(PPID)为0,这通常表示它们是由内核启动的特殊进程。这些进程通常在系统引导过程中由内核创建,而不是通过常规的用户态进程创建机制。kthreaddsystemd 就是两个这样的进程。
![[Pasted image 20240718215617.png]]

进程的五种状态

  • S(Interruptible sleep):可中断休眠状态。
    可以接收到异常信号,从而中断休眠状态
  • D(Uninterruptible sleep):不可中断休眠状态。
  • R(Running or runnable):执行或者在可执行队列中。
  • Z(Zombie process):僵尸。
    当父进程结束后,子进程的资源还未被释放,这时子进程就变为僵尸进程
  • T(Stopped):暂停。

任务管理

查看进程

ps

![[Pasted image 20240718221435.png]]

pstree

我们使用 pstree 命令可以很清楚的看到进程之间的关系
在这里插入图片描述

top

top 命令可以实时展示进程状态和 cpu 占用情况
请添加图片描述

杀死进程

kill

原理

kill命令通过向内核发送系统调用来向目标进程发送信号。内核接收到信号后,将其传递给目标进程。进程根据信号的类型和预定义的处理程序来处理信号。
常见的信号包括:

  • SIGTERM (15):请求进程终止。可以被进程捕获和处理或忽略,是一种温和的终止信号。
  • SIGKILL (9):强制终止进程。不能被捕获、阻塞或忽略,立即终止进程。
  • SIGHUP (1):挂起信号,通常用于重新加载配置文件或重启进程。
  • SIGINT (2):中断信号,通常由用户通过Ctrl+C发出,表示请求进程终止。
  • SIGQUIT (3):退出信号,通常由用户通过Ctrl+\发出,产生核心转储文件并终止进程。
使用方法
命令描述示例
kill [PID]发送默认的SIGTERM信号请求终止进程kill 1234
kill -9 [PID]发送SIGKILL信号强制终止进程kill -9 1234
kill -s [SIGNAL] [PID]发送指定的信号给进程kill -s SIGHUP 1234
kill -[SIGNAL_NUMBER] [PID]发送指定编号的信号给进程kill -1 1234
kill -l列出所有可用的信号名称和编号kill -l
kill [PID1] [PID2] ...发送默认的SIGTERM信号请求终止多个进程kill 1234 5678 91011

前台后台进程

jobs

当我们在指令后面加上 & 符号时候,系统就会将该进程放在后台执行并生成一个 job
![[Pasted image 20240718222201.png]]

其中 [ job ID] PID
我们可以使用 fg %[job ID] 将其放在前台工作
也可以使用 bg %[job ID] 放在后台工作

进程优先级

nice 和 priority 值

![[Pasted image 20240718213620.png]]

nice

nice 值取值区间为 -20 -- 19, 我们可以把抢占 cpu 资源想象成一个不好的行为(一直占用公共资源本来就是一种恶习),这样当一个程序是 nice 的时候,就是它抢占 cpu 资源的能力低,也就是优先级变低
nice 值是不会变化的,因此也被称为静态优先级。在一个进程被 fork 时候,nice 值默认为 0,我们也可以使用 nice -n <num> <cmd> 来初始化一个进程的 nice 值,也可以使用 renice 重新设定一个正在执行的进程的 nice 值

priority

priority 的取值范围为 0 -- 139 ,取值越小优先级越高
根据进程的优先级我们可以把进程分为两类:
0 -- 99 : 实时进程
100 -- 139 :非实时进程

实时进程和非实时进程

在Linux中,实时进程和普通进程的调度机制是不同的。
有以下几点规则:

  • 实时进程先于非实时进程执行
  • 对于实时进程,一定是优先级高的先执行,同优先级执行相应的调度机制
  • nice 值对于实时进程无效

参考文章

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值