Linux操作系统的进程和线程
2026/6/6 12:48:39 网站建设 项目流程

一 .何为进程

1.进程是计算机系统中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位,包含程序代码、数据和执行状态。每个进程拥有独立的地址空间、系统资源。

2.进程的组成

  1. 代码段:存储可执行指令。

  2. 数据段:包含全局变量和静态变量。

  3. 堆栈段:用于函数调用、局部变量和返回地址。

  4. 进程控制块(PCB):操作系统维护的数据结构,记录进程ID、状态、优先级、资源使用情况等。

二 .何为线程

1.线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单元。一个进程可以包含多个线程,所有线程共享进程的资源(如内存、文件描述符等),但每个线程拥有独立的程序计数器、栈和寄存器等执行上下文。

OK前情提要至此,下面开始正式介绍Linux下对于进程和线程的管理。

一.进程的查看

1.1在图形中查看

window中有启动任务管理器,Linux也有自己的启动任务管理器,在shell中输入以下命令。

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

1.2常用查看进程的指令--ps

#ps指令用于显示当前指令的进程状态信息,提供进程的详细属性

ps命令在Unix/Linux系统中的参数风格有以下三种

Unix风格:#ps -ef//显示所有进程完整信息

#ps -aux//显示所有用户进程

Bsd风格:#ps xjf//显示进程树状结构

Gnu风格:#ps --forest//树状显示进程层级

ps 命令默认执行(只显示当前终端运行的程序)

#ps a//显示系统中所有有字符设备使用的进程

#ps x//显示系统中所有无字符设备使用的进程

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

1.3常用查看进程的指令--pgrep

pgrep

#进程过滤

#-u uid //指定用户进程

#-t tty //指定终端进程

#-l //显示进程名称

如图我们打开2个shell后,我们就可以通过pgrep命令过滤出用户(liaosuo)的进程

1.4常用查看进程的指令--top

top指令用于动态的查看进程的信息

#-d //指定刷新频率

#-b //以批次方式显示

#-n //指定显示数量

  1. 系统概览
    顶部区域显示:

    • 系统运行时间(uptime
    • 当前登录用户数
    • 负载平均值(1/5/15分钟):如load average: 0.02, 0.01, 0.00
      表示系统任务队列的平均长度,数值超过 CPU 核心数可能表示过载。
  2. CPU 状态

    • %us:用户空间占用
    • %sy:内核空间占用
    • %id:空闲率
    • 例如:%Cpu(s): 12.3 us, 1.5 sy, 86.2 id
  3. 内存统计

    • Mem:物理内存使用(total/free/used/buffers
    • Swap:交换空间使用情况
  4. 进程列表
    默认按 CPU 占用率排序,显示:

    • PID:进程 ID
    • USER:所有者
    • %CPU:CPU 占用百分比
    • %MEM:内存占用百分比
    • COMMAND:进程名

1.5.常用查看进程的指令pidof

pidof是一个用于查找正在运行进程的进程 ID(PID)的 Linux 命令。它通过进程名称直接返回对应的 PID,适用于脚本或命令行中快速获取进程信息。

#pidof vim //查询当前所有vim的ID

二.进程的前后台调用

#<ctrl>+<z> //将shell程序在后台挂起

#bg //将后台程序运行

#fg //将后台程序调回前台

#jobs //查看当前终端的所有后台程序

三.进程的优先级

3.1.何为进程优先级

进程优先级通过一个数值系统来管理,核心是“nice值”和调度策略。nice值用于调整进程的相对优先级,而调度策略则定义了进程如何在CPU上执行。优先级越高(nice值越低),进程越容易获得CPU资源;反之,优先级越低(nice值越高),进程获得的CPU时间越少。

3.2.nice值

nice值是Linux中表示进程优先级的核心参数:

  • 范围从$ -20 $(最高优先级)到$ 19 $(最低优先级)。
  • 默认nice值是$ 0 $,表示普通优先级。
  • 例如,nice值为$ -10 $的进程比nice值为$ 5 $的进程有更高的优先级,因此会优先执行。

nice值由内核维护,用户可以通过命令调整它。需要注意的是,设置负nice值(提高优先级)通常需要管理员权限(root),以防止普通用户独占资源。

3.3.进程优先级的调整

需要注意0-99是内核自控范围,100-139是用户可控范围

#nice -n -5 gedit //指定优先级并打开一个gedit

#renice -n -5 id //将指定的进程优先级修改

四.对于进程信号控制

4.1kill命令

kill是Linux和Unix系统中用于终止进程的命令,通过发送特定信号来控制进程的行为。

4.2实验展示:

#命令+&//在后台打开命令

例如:#gedit &//在后台打开图形编辑器

我们可以用以上方式来强制终止进程,效果与window系统中的启动任务管理器结束任务类似

kill的使用方式为#kill + 参数 +进程id其中参数有很多,并且有不同作用,但只有一部分是我们可以调用的

  • SIGTERM(15):默认信号,请求进程正常终止。
  • SIGKILL(9):强制终止进程,不可被捕获或忽略。
  • SIGHUP(1):挂起信号,常用于重启守护进程。
  • SIGINT(2):中断信号(等同Ctrl+C)。
  • SIGINT(3):终止进程并生成核心储存文件。
  • SIGINT(20):暂停进程,可以被捕获。
  • SIGINT(18):暂停进程,不可被捕获。

#kill + 参数 + pid //用于处理指定进程

#killall +参数 +进程名 //处理批量进程

#pkill +参数 +进程条件 //按照条件批量处理

五.守护进程

5.1.守护进程是什么

守护进程(Daemon)是在操作系统后台运行的一类特殊进程,通常不与用户直接交互,独立于控制终端。它通常在系统启动时被初始化,负责执行周期性任务或处理系统服务请求,如日志管理、网络服务等。

5.2.小实验

首先我们开启两台主机

在第一台主机中使用ip a(ip add)指令获取此电脑的ip(window的命令为ip config)

于是我们可以在第二台主机通过#ssh -l root + 网络ip的形式远程访问第一台主机,并输入第一台主机的root用户的密码

这样就可以成功访问其他主机,但是为何我们访问他人主机的行为会被允许呢?

我们在第一台主机通过指令#systemctl status sshd查询我们的状态,可以看到是否运行访问的状态是(running)也就是打开的,所以别人的主机就可以正常访问我们的主机

5.3.systemctl命令

#systemctl status //查询状态

#systemctl start //启动服务

#systemctl stop //停止服务

#systemctl stop //重启服务

#systemctl enable //启动开机自启

#systemctl disable //禁用开机自启

六.小结

本次给大家介绍了何为进程何为线程,又通过不同的命令演示如何查看进程的各种信息,进程的前后台调用,进程的优先级修改,对进程的信号控制,以及最后的守护进程,有不对的地方欢迎指正,博雅还需凌云志,未名从来爱少年。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询