进程与线程揭秘:从基础到实战 一.理解进程和线程1.1什么是进程1. 进程是程序在操作系统中的一次执行过程是系统进行资源分配和调度的基本单位。2.它包含了程序执行所需的各种资源如内存空间、文件描述符等。3.每个进程都有自己独立的内存空间和系统资源不同进程之间相互隔离。4.程序是静态的代码文件。5.进程是指程序运行时的形态。6.进程是程序的一个副本。7.进程是有生命周期的准备期运行期终止期。1.2什么是线程1. 线程是进程中的一个执行单元是CPU调度和分派的基本单位。2.一个进程可以包含多个线程这些线程共享进程的内存空间和系统资源。3.每个线程有自己独立的栈空间和程序计数器。4.线程之间可以并发执行提高程序的执行效率。5.当进程是多任务cpu是多核心多任务应该同时被每个核心处理每个核心处理的任务叫线程。二、进程状态进程状态码含义R(TAKS_RUNNING)可执行态runningreadyS(TASK_INTRRUPTABLE)可唤醒休眠D(TASK_UNINTRRUPTABLE)不可唤醒休眠T(TASK_STOP)暂停状态Z(TASK_zombie)僵死态三、进程查看的方法3.1在图形中查看进程3.2常用进程查看命令的使用1.ps命令的三种执行风格unix bsd GNUa与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)x与终端无关相关的进程u用户信息归类的查看方式f进程层级关系o显示指定参数-e显示所有进程-f显示信息的完整格式-H显示进程的层级结构-o显示指定参数--sort查看按指定字段排序后的进程显示信息USER进程所有人PID进程id%CPU进程使用cpu的用量%MEM进程所用到的内存用量VSZ进程使用的虚拟内存大小RSS进程常驻内存中的数据大小TTY进程用到的终端STAT进程状态START进程运行时长TIME进程占用cpu时长COMMAND进程名称BSD:x:a:u,f:o:UNIX:-e:-H:-f:GUN--sort2.pgrep进程过滤-u uid显示指定用户进程-U user显示指定用户进程-t tty显示指定终端进程-l显示进程名称-a显示进程的完整名称-P进程的子进程3.pidof4.top:动态进程查看01:12:46系统当前时间up 1:00运行时长2 users系统登录用户数load average0.08,0.02,0.011 分钟、5 分钟、15 分钟平均负载306 total任务总量1 running正在运行进程数304 sleeping休眠进程数量1 stopped暂停进程数量0 zombie僵尸进程数量CPU(S)us(7.6%)用户空间sy(1.7%)内核空间ni(0.0%)nice值调整时间id(89.9%)空闲时间wa(0.0%)待io时间hi/si处理硬/软件中断时间st被虚拟机抢占 CPU 耗时四、进程的前后台调用ctrlz把占用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-1391.监控2.调整已经开启的进程优先级3.当开启进程时任何指定优先级进程状态符号状态说明Ssleeping休眠状态优先级高S顶级进程Tstop暂停状态N优先级低Rrunning运行状态运行在前台六、进程信号的使用6.1进程信号的定义在Linux系统中进程信号Process Signal是一种软件中断机制用于在进程之间传递异步通知。它为系统提供了一种处理异常情况、实现进程间通信的简单方式。信号可以由系统内核、其他进程或者用户手动发送给目标进程当进程接收到信号时会根据信号的类型执行相应的操作如终止进程、暂停进程、忽略信号等。6.2用户可控进程信号信号名称信号编号默认行为描述SIGHUP1终止进程终端断开连接时发送给与该终端关联的进程常用于重新加载配置文件SIGINT2终止进程用户在终端按下CtrlC时发送给当前前台进程SIGQUIT3终止进程并生成核心转储文件用户在终端按下Ctrl\时发送给当前前台进程SIGTEAM15终止进程通常用于请求进程正常终止是系统默认的终止信号SIGKILL9强制终止进程不能被捕获、阻塞或忽略用于强制终止无法正常响应的进程SIGCONT18继续执行暂停的进程用于恢复被暂停的进程SIGSTOP19暂停进程不能被捕获、阻塞或忽略用于暂停进程的执行SIGSTOP20暂停进程可以被捕获、阻塞或忽略用于暂停进程的执行信号特点1、可捕获、阻塞和忽略像SIGHUP、SIGINT、SIGTERM这类信号进程可以编写相应的信号处理函数来捕获它们也可以选择阻塞暂时不处理或者忽略这些信号。2、不可捕获、阻塞和忽略SIGKILL和SIGSTOP信号比较特殊进程无法对其进行捕获、阻塞或忽略操作这保证了在必要时可以强制终止或暂停进程。6.3如何使用进程信号Linux进程信号控制工具kill 进程信号 pid处理精确指定的进程killall 进程信号 进程名字按照进程名称批量处理进程pkill 进程信号 进程条件按照条件处理进程七、systemd守护进程7.1守护进程是什么1.守护进程Daemon是一种在后台持续运行的特殊进程它不与终端直接交互通常在系统启动时自动启动并在系统关闭时才停止。2.守护进程的设计目的是为系统提供各种服务例如网络服务如HTTP服务器、FTP服务器、日志服务、定时任务服务等。它们默默地在后台运行为其他进程和用户提供支持确保系统的正常运行。7.2守护进程的特点1、在后台运行守护进程不会占用终端不会受到用户登录或注销的影响持续在后台执行任务。2、生命周期长一般从系统启动开始运行直到系统关闭才停止为系统提供长期稳定的服务。3、无控制终端守护进程没有控制终端不会接收来自终端的输入也不会将输出显示在终端上。4、自成进程组和会话守护进程通常会创建自己的进程组和会话以确保独立于控制终端和其他进程。7.3 Systemd守护进程1. Systemd是Linux系统中新一代的初始化系统init system它旨在替代传统的SysVinit和Upstart等初始化系统2. Systemd提供了一套强大的工具和机制用于管理系统的启动、服务的管理、资源的分配等。它的设计目标是提高系统的启动速度、简化服务管理、增强系统的可靠性和可维护性。7.4守护进程管理命令systemctlsystemctl命令的用法start开启stop关闭status查看状态reload重新加载restart重启服务enable设定服务开机启动enable --now设定服务开机启动并开启当前服务disable设定服务开机不启动list-unuuuuu查看系统所有服务当前状态list-unit-files查看所有服务开机状态list-dependencies列出服务的依赖性mask冻结服务unmask解锁set-default设定系统默认运行模式multi-user.target无图形网络模式graphical.target有图形的网络模式get-default查看系统默认运行模式0关机1单用户模式2无图形网络模式3无图形网络模式4无图形网络模式5图形网络模式6重启