一,理解进程和线程

1.1什么是进程

1.进程是程序在正运行的实体

2.核心特点

-独立性:各进程内存相互隔离,默认不能直接互相访问。
-动态性:有完整生命周期:创建 → 就绪 → 运行 → 阻塞 → 终止。
-并发性:单核CPU通过快速切换时间片,让多个进程“同时”运行。
-关联性:进程可以创建子进程,形成父子进程关系。

1.2什么是线程

1.线程是进程内部的执行单元,也是操作系统CPU 调度的最小单位。
一个进程里可以包含多个线程,所有线程共享当前进程的资源。

2.核心特点

-轻型实体:自身资源极少,主要靠进程提供资源。
-并发执行:同一进程内多个线程可以交替使用 CPU,实现并行工作。
-共享资源:全局变量、堆内存、打开的文件全部共享。
-调度基本单位:CPU 真正调度、切换的是线程。

二,进程状态

状态码     状态名称                          说明
R             运行/就绪态                     正在占用CPU执行,或在就绪队列等待调度
S              可中断睡眠                     最常见状态。等待事件,可被信号唤醒
D              不可中断睡眠                 通常为磁盘I/O阻塞,无法被信号中断, 命令无效
Z              僵尸进程                         子进程已退出,父进程未回收其退出信息,PCB残留
T               暂停态                            收到暂停信号(如),进程停止执行
t                跟踪暂停                         被调试程序打断(gdb调试场景)
X               死亡态                             进程彻底消亡,资源完全回收,几乎观测不到

三,进程查看的方法

3.1在图形中查看进程

第一种方式

#gnome-system-monitor                        打开图形中的进程管理工具
 

第二种方式

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

#ps进程查看

#ps                命令的三种执行风格 unix bsd GNU
#a                  与终端相关的进程
#x                  与终端无关相关的进程
#u                  用户信息归类的查看方式
#f                   进程层级关系
#o                  显示指定参数
#-e                 显示所有进程
#-f                  显示信息的完整格式
#-H                 显示进程的层级结构
#-o                  显示指定参数

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                    进程名称

#pgrep进程查看

#-u uid                         显示指定用户进程
#-U user                      显示指定用户进程
#-t tty                           显示指定终端进程
#-l                                显示进程名称
#-a                               显示进程的完整名称
#-P                               进程的子进程

#pidof进程查看

查看进程的pid


#top进程查看


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

top内部指令
    #P                  cpu排序
    #M                 内存排序
    #T                  累计占用cpu时间排序
    #1                  关闭/开启uptime信息
    #t                   关闭/开启cpu&tasks
    #s                  指定刷新频率
    #k                  操作进程
    #u                  查看指定用户进程

四,进程的前后台调用

<ctrl>+<z>                    ##把占用shell的进程打入后台挂起
bg                                 ##把后台挂起的进程运行起来
fg                                  ##把后台进程调回前台
命令&                           ##运行进程在后台
jobs                              ##查看当前shell中在后台的所有工作

五,进程的优先级

5.1进程优先级定义

进程优先级是操作系统调度器用来决定CPU资源分配顺序的核心依据,优先级越高的进程,越容易获得CPU时间片,调度器会优先为它分配资源。

5.1优先级种类

Linux 中进程优先级分为内核态优先级和用户态优先级两大体系,日常运维主要接触 Nice 优先级,内核层面还有实时优先级,两类调度策略、取值、作用完全不同。
 
一、1. 普通进程优先级(CFS 调度,默认进程)
 
Linux 桌面、服务器绝大多数进程都属于此类,由完全公平调度器 CFS 管理。
包含两个关联参数:PRI(内核优先级)、NI(Nice 值,用户可改)
 
(1)PRI 内核优先级
 
- 定义:内核实际调度使用的优先级编号,系统内核维护,用户不能直接修改。
- 规则:数值越小,优先级越高。
- 取值:默认范围  0 ~ 139 。
- 计算: 新PRI = 原始PRI + NI ,会随 Nice 值动态变化。
 
(2)NI 友好值(Nice 值,用户优先级)
 
最常用、可手动调整的优先级,用来控制进程“谦让度”。
 
- 取值范围:-20 ~ 19
-  -20 :最高优先级
-  0 :系统默认优先级
-  19 :最低优先级
- 权限规则:
- 普通用户:仅能将 NI 调大(0~19,降低优先级)
- root 用户:可设置全部区间(-20 ~ 19)
- 相关命令
  
# 启动进程时指定优先级
nice -n 数值 命令
# 修改正在运行进程的优先级
renice -n 数值 -p PID
 
 
二、2. 实时进程优先级(实时调度,高优先级进程)
 
针对对响应速度要求极高的程序(硬件驱动、工业控制、音视频采集等),由实时调度策略管理。
 
特点:实时进程优先级 > 所有普通进程,只要实时进程就绪,会优先抢占 CPU。
 
分类 & 取值
 
分为两种实时调度策略,优先级取值统一:
 
- 优先级范围:1 ~ 99
- 规则:数值越大,优先级越高(和普通进程相反)

5.3进程优先级的调整方法

基础概念

Linux 进程优先级决定 CPU 调度顺序,系统分为普通进程和实时进程两大类,日常运维主要操作普通进程的 Nice 值。
 
1. PRI:内核实际调度优先级,系统自动计算,用户无法直接修改,数值越小优先级越高。
2. NI(Nice 值):用户可手动调整的优先级参数,俗称友好值。
- 取值范围: -20 ~ 19 
- 规则:数值越小,优先级越高
- 默认值: 0 
3. 优先级关系: PRI(新) = PRI(原始) + NI 

权限限制
 

- 普通用户:仅能将 Nice 值调大( 0 ~ 19 ),只能降低进程优先级,无法抢占系统资源。
- root 超级用户:可设置完整区间  -20 ~ 19 ,能提升/降低任意进程优先级。

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

nice -n -5 cat                              ##指定优先级打开进程
renice -n -5 43331                      ##更改优先级

进程状态字符详解
S       #sleeping
<       #优先级高
s       #顶级进程
T       #stop
N       #优先级底
R       #running
+       #运行在前台

六,进程信号的使用

6.1进程信号的定义

信号是 Linux 系统中进程间异步通信的一种方式,本质是内核向进程发送的简短消息,用于通知进程发生了某个事件。
 
信号属于软中断,进程收到信号后,会按照预设方式做出响应(终止、暂停、重启、忽略、执行自定义操作等)。
信号来源:内核、其他进程、终端操作、硬件异常。

6.2用户可控进程信号

| 信号名称 | 信号编号 | 默认行为 | 描述 |
| --- | --- | --- | --- |
| SIGHUP | 1 | 终止进程 | 终端断开连接时发送给与该终端关联的进程,常用于重新加载配置文件 |
| SIGINT | 2 | 终止进程 | 用户在终端按下 ctrl+c 时发送给当前前台进程 |
| SIGQUIT | 3 | 终止进程并生成核心转储文件 | 用户在终端按下 ctrl+\ 时发送给当前前台进程 |
| SIGTERM | 15 | 终止进程 | 通常用于请求进程正常终止,是系统默认的终止信号 |
| SIGKILL | 9 | 强制终止进程 | 不能被捕获、阻塞或忽略,用于强制终止无法正常响应的进程 |
| SIGCONT | 18 | 继续执行暂停的进程 | 用于恢复被暂停的进程 |
| SIGSTOP | 19 | 暂停进程 | 不能被捕获、阻塞或忽略,用于暂停进程的执行 |
| SIGTSTP | 20 | 暂停进程 | 可以被捕获、阻塞或忽略,用于暂停进程的执行 |

6.3如何使用进程信号

#进程信号控制工具

kill    进程信号 pid        #处理精确指定的进程
killall 进程信号 进程名字    #按照进程名称批量处理进程
pkill   进程信号 进程条件    #按照条件处理进程

七,system守护进程

7.1守护进程是什么

守护进程(Daemon) 是一类脱离终端、长期在后台运行的特殊进程,是 Linux 系统服务的主要实现形式。
系统开机后自动启动,持续提供网络、存储、日志、权限等各类服务,不会因为终端关闭、用户退出而终止。

7.2守护进程的特点

1. 脱离终端:不依附任何终端,关闭终端、退出登录不会终止进程。
2. 后台运行:默认在后台静默执行,无交互界面。
3. 生命周期长:多数随系统开机启动、关机结束,长期常驻系统。
4. 父进程为systemd:CentOS 7+ 主流系统中,父进程是 PID=1 的  systemd ,孤儿进程也会被其收养。
5. 自动运行:一般设置为开机自启,无需人工手动启动。
6. 用途专一:主要用于提供系统服务、网络服务、定时任务等,持续对外提供功能。
7. 文件权限独立:通常以专用用户身份运行,拥有独立的运行日志、工作目录。

7.3系统守护进程

用sshd来理解守护进程

开启两个虚拟机并查看该虚拟机的ip

使用     # IP     a     命令查看ip

用第一台主机通过#sshd -l root +ip的形式远程访问另一台主机root用户的密码

并且开启可访问模式

# 启动服务
systemctl start 服务名

# 停止服务
systemctl stop 服务名

# 重启服务(先停止再启动,会中断业务)
systemctl restart 服务名

# 重载配置(不停止服务,加载新配置)
systemctl reload 服务名

# 设置开机自动启动
systemctl enable 服务名

# 关闭开机自启
systemctl disable 服务名

# 查看是否设置开机自启
systemctl is-enabled 服务名



 


 

Logo

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

更多推荐