Linux操作系统的进程和线程 一 .何为进程1.进程是计算机系统中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位包含程序代码、数据和执行状态。每个进程拥有独立的地址空间、系统资源。2.进程的组成代码段存储可执行指令。数据段包含全局变量和静态变量。堆栈段用于函数调用、局部变量和返回地址。进程控制块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常用查看进程的指令--pgreppgrep#进程过滤#-u uid //指定用户进程#-t tty //指定终端进程#-l //显示进程名称如图我们打开2个shell后我们就可以通过pgrep命令过滤出用户liaosuo的进程1.4常用查看进程的指令--toptop指令用于动态的查看进程的信息#-d //指定刷新频率#-b //以批次方式显示#-n //指定显示数量系统概览顶部区域显示系统运行时间uptime当前登录用户数负载平均值1/5/15分钟如load average: 0.02, 0.01, 0.00表示系统任务队列的平均长度数值超过 CPU 核心数可能表示过载。CPU 状态%us用户空间占用%sy内核空间占用%id空闲率例如%Cpu(s): 12.3 us, 1.5 sy, 86.2 id内存统计Mem物理内存使用total/free/used/buffersSwap交换空间使用情况进程列表默认按 CPU 占用率排序显示PID进程 IDUSER所有者%CPUCPU 占用百分比%MEM内存占用百分比COMMAND进程名1.5.常用查看进程的指令pidofpidof是一个用于查找正在运行进程的进程 IDPID的 Linux 命令。它通过进程名称直接返回对应的 PID适用于脚本或命令行中快速获取进程信息。#pidof vim //查询当前所有vim的ID二.进程的前后台调用#ctrlz //将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)中断信号等同CtrlC。SIGINT(3)终止进程并生成核心储存文件。SIGINT(20)暂停进程可以被捕获。SIGINT(18)暂停进程不可被捕获。#kill 参数 pid //用于处理指定进程#killall 参数 进程名 //处理批量进程#pkill 参数 进程条件 //按照条件批量处理五.守护进程5.1.守护进程是什么守护进程Daemon是在操作系统后台运行的一类特殊进程通常不与用户直接交互独立于控制终端。它通常在系统启动时被初始化负责执行周期性任务或处理系统服务请求如日志管理、网络服务等。5.2.小实验首先我们开启两台主机在第一台主机中使用ip a(ip add)指令获取此电脑的ipwindow的命令为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 //禁用开机自启六.小结本次给大家介绍了何为进程何为线程又通过不同的命令演示如何查看进程的各种信息进程的前后台调用进程的优先级修改对进程的信号控制以及最后的守护进程有不对的地方欢迎指正博雅还需凌云志未名从来爱少年。