理解进程和线程

1.1 什么是进程

1.进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。
2. 它包含了程序执行所需的各种资源,如内存空间、文件描述符等
3. 每个进程都有自己独立的内存空间和系统资源,不同进程之间相互隔离
4. 程序是静态的代码文件
5. 进程是指程序运行时的形态
6. 进程是程序的一个副本
7. 进程是有生命周期的(准备期,运行期,终止期)

1.2什么是线程

1.线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。
2. 一个进程可以包含多个线程,这些线程共享进程的内存空间和系统资源
3. 每个线程有自己独立的栈空间和程序计数器、
4. 线程之间可以并发执行,提高程序的执行效率
5. 当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程

进程状态

进程状态码 含义
R(TAKS_RUNNING) 可执行态(running,ready)
S(TASK_INTRRUPTABLE) 可唤醒休眠
D(TASK_UNINTRRUPTABLE) 不可唤醒休眠
T(TASK_STOP) 暂停状态
Z(TASK_zombie) 僵死态

进程查看的方法

3.2常见进程查看命令的使用

ps
# 进程查看
# ps 命令的三种执行风格 unix bsd GNU
# a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)
# x 与终端无关相关的进程
# u 用户信息归类的查看方式
# f 进程层级关系
# o 显示指定参数
# pid comm nice pri pcpu ppid stat,user,group
# -e 显示所有进程
# -f 显示信息的完整格式
# -H 显示进程的层级结构
# -o 显示指定参数
# --sort=

ps ax
# PID 进程id
# TTY 进程用到的终端
# STAT 进程状态
# TIME 进程占用cpu时长
# COMMAND 进程名称
ps aux
# USER 进程所有人
# PID 进程id
# %CPU 进程使用cpu的用量 # %MEM 进程所用到的内存用量
# VSZ 进程使用的虚拟内存大小
# RSS 进程常驻内存中的数据大小
# TTY 进程用到的终端
# STAT 进程状态
# START 进程运行时长
# TIME 进程占用cpu时长
# COMMAND 进程名称
建立实验素材 命令后加入& 表示命令在执行时会被打入后台 不占用shell

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pgrep
# 进程过滤
# -u uid 显示指定用户进程
# -U user 显示指定用户进程
# -t tty 显示指定终端进程
# -l 显示进程名称
# -a 显示进程的完整名称
# -P 进程的子进程
在这里插入图片描述
在这里插入图片描述

top
# 动态进程查看
# top命令的参数
# -d 指定刷新频率
# -b 以批次方式显示
# -n 指定显示的批次数量

top内部指令
# P cpu排序
# M 内存排序
# T 累计占用cpu时间排序
# l 关闭/开启uptime信息
# t 关闭/开启cpu&task
# s 指定刷新频率
# k 操作进程
# u 查看指定用户进程
在这里插入图片描述
top中的内容显示信息
# 09:48:51 系统时间
# up 18:54 运行时长
# 2 users 系统中有两个用户登陆
# load average: 0.75, 0.53, 0.41
1min 5min 15min

Tasks

#303 total 任务总量
# 1 running 正在运行
# 301 sleeping 休眠人物数量
# 1 stopped 被暂停数量
# 0 zombie 僵死人物数量四 进程的前后台调用

%Cpu(s)
# 0.7 us 用户空间
# 0.5 sy 内核空间
# 0.0 ni nice值调整时间
# 98.7 id 空闲时间
# 0.0 wa 等待io时间
# 0.0 hi 处理硬件中断时间
# 0.2 si 处理软件中断时间
# 0.0 st 被偷走的时间(vm使用时间)

MiB Mem
# 3623.1 total, 总量
# 1661.2 free 空闲
# 1465.7 used 占用
# 758.9 buff/cache 缓存

MiB Swap: 交换分区用量

在这里插入图片描述 #PID 进程id
#USER 进程所有者的用户名
#PR 优先级
#Nnice值。负值表示高优先级,正值表示低优先级
#VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
#RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
#SHR 共享内存大小,单位kb
#S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
#%CPU 上次更新到现在的CPU时间占用百分比
#%MEM 进程使用的物理内存百分比
#TIME+ 进程使用的CPU时间总计,单位1/100秒
#COMMAND 命令名/命令行

进程前后台调用

+ #把占用shell的进程打入后台挂起

bg #把后台挂起的进程运行起来

fg #把后台进程调回前台

命令& #运行进程在后台

jobs #查看当前shell中在后台的所有工作

进程的优先级

5.1 进程优先级定义

  1. 进程优先级(Process Priority)是 Linux 内核用于决定 CPU 资源分配的关键指标
  2. 优先级越高的进程越有可能被 CPU 优先调度执行

5.2 优先级种类

  1. 静态优先级:由用户或管理员在进程启动时或运行中手动设置,范围为 -20 (最高优先级)到 19
    (最低优先级),数值越小优先级越高。
  2. 动态优先级:由内核根据进程的运行状态(如 CPU 使用时间、睡眠时长等)自动调整,以平衡系统
    资源分配。

5.3 静态优先级的调整方法

优先级范围值
# 范围: 0–139
# 内核自控优先级范围:0-99
# 用户可控优先级:100-139

nice -n -5 cat # 指定优先级打开进程
renice -n -5 45900 # 更改优先级
在这里插入图片描述
进程状态字符详解
S #sleeping
< #优先级高
s #顶级进程
T #stop
N #优先级底
R #running

  • #运行在前台

进程信号的使用

6.1 进程信号的定义

在 Linux 系统中,进程信号(Process Signal)是一种软件中断机制,用于在进程之间传递异步通知。它
为系统提供了一种处理异常情况、实现进程间通信的简单方式。信号可以由系统内核、其他进程或者用
户手动发送给目标进程,当进程接收到信号时,会根据信号的类型执行相应的操作,如终止进程、暂停
进程、忽略信号等。

6.2 用户可控进程信号

在这里插入图片描述

6.3 如何使用进程信号

在这里插入图片描述
在这里插入图片描述
权利越大意味着风险越大!

systemd守护进程

7.1 守护进程是什么

  1. 守护进程(Daemon)是一种在后台持续运行的特殊进程,它不与终端直接交互,通常在系统启动
    时自动启动,并在系统关闭时才停止。

  2. 守护进程的设计目的是为系统提供各种服务,例如网络服务(如 HTTP 服务器、FTP 服务器)、日
    志服务、定时任务服务等。它们默默地在后台运行,为其他进程和用户提供支持,确保系统的正常
    运行。

7.2 守护进程的特点

在后台运行:守护进程不会占用终端,不会受到用户登录或注销的影响,持续在后台执行任务。

生命周期长:一般从系统启动开始运行,直到系统关闭才停止,为系统提供长期稳定的服务。

无控制终端:守护进程没有控制终端,不会接收来自终端的输入,也不会将输出显示在终端上。

自成进程组和会话:守护进程通常会创建自己的进程组和会话,以确保独立于控制终端和其他进
程。

7.3 Systemd 守护进程

  1. Systemd 是 Linux 系统中新一代的初始化系统(init system),它旨在替代传统的 SysVinit 和
    Upstart 等初始化系统

  2. Systemd 提供了一套强大的工具和机制,用于管理系统的启动、服务的管理、资源的分配等。它的
    设计目标是提高系统的启动速度、简化服务管理、增强系统的可靠性和可维护性。

7.4 守护进程管理命令systemctl

1.systemctl命令的用法

start #开启
stop #关闭
status #查看状态
reload #重新加载
restart #重新启动服务
enable #设定服务开机启动
enable --now #设定服务开机启动并当前开启服务
disable #设定服务开启不其动
list-units #查看系统所有服务当前状态
list-unit-files #查看服务开机状态
list-dependencies #列出服务依赖性
mask #冻结服务
unmask #解锁
set-default
#设定系统运行模式
#multi-user.target 无图形网络模式
#graphical.target 有图形的网络模式
get-default
#查看系统运行模式
#系统运行模式
#0-6
#0 关机
#1 单用户模式
#2 无图形网络模式
#3 无图形网络模式
#4 无图形网络模式
#5 图形网络模式
#6 重启

2.用sshd来理解守护进程

开启并查看两台虚拟机的ip
在这里插入图片描述

登录远程主机
在这里插入图片描述

3. 服务控制命令

在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐