day25-进程管理核心知识1

源码包的编译与安装过程

知识点

熟悉源码包的编译和安装步骤

源码安装步骤:

  • 下载源码包。

    wget -q http://nginx.org/download/nginx-1.20.1.tar.gz
    
  • 解压缩源码包。

    tar xf nginx-1.20.1.tar.gz
    
  • 安装了编译工具(如GCC和make)两种安装方式。

     rpm -qa make gcc wget
     yum install gcc make wget -y
    
  • 解决编译过程中可能出现的依赖问题(如安装PCRE库)。

    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre= option.

    yum install pcre-devel -y
    

    ./configure: error: the HTTP gzip module requires the zlib library.
    You can either disable the module by using --without-http_gzip_module
    option, or install the zlib library into the system, or build the zlib library
    statically from the source with nginx by using --with-zlib= option.

    yum install zlib-devel -y
    
  • 编译源码生成二进制文件。

    配置相关的选项,并生成Makefile

    ./configure --prefix=/application/nginx-1.20.1
    

    将Makefile文件编译可执行二进制程序

    make
    
  • 安装二进制文件到系统。

    make install
    

如何使用GCC和make等编译工具

GCC(GNU编译器集合)和make是两个在Linux环境下常用的编译工具。GCC是用于编译C、C++等语言的编译器,而make是一个自动化构建工具,它根据Makefile文件中的指令来编译和管理项目。

以下是使用GCC和make的基本步骤:

  1. 安装GCC和make
    在大多数Linux发行版中,GCC和make可以通过包管理器安装。例如,在Ubuntu或Debian系统中,可以使用以下命令安装:

    sudo apt-get update
    sudo apt-get install build-essential
    
    

    这将安装GCC和make,以及其他一些基本的编译工具。

  2. 编写源代码
    使用文本编辑器编写你的C或C++源代码,并将其保存为.c.cpp文件。

  3. 编译源代码
    使用GCC编译单个源文件,例如:

    gcc -o myprogram myprogram.c
    
    

    这将编译myprogram.c并生成一个名为myprogram的可执行文件。

  4. 使用Makefile
    对于更复杂的项目,通常需要一个Makefile来管理多个源文件和目标文件的编译。一个简单的Makefile可能如下所示:

    myprogram: main.o foo.o bar.o
        gcc -o myprogram main.o foo.o bar.o
    
    main.o: main.c
        gcc -c main.c
    
    foo.o: foo.c
        gcc -c foo.c
    
    bar.o: bar.c
        gcc -c bar.c
    
    clean:
        rm -f *.o myprogram
    
    

    在这个Makefile中,myprogram是最终的可执行文件,它依赖于三个对象文件main.ofoo.obar.o。每个对象文件都由相应的源文件编译生成。

  5. 构建项目
    在Makefile所在的目录下运行make命令来构建项目:

    make
    
    

    make会根据Makefile中的指令自动编译源代码并生成可执行文件。

  6. 清理构建文件
    如果你想要清理所有编译过程中生成的对象文件和可执行文件,可以使用make的clean目标:

    make clean
    
    
  7. 调试
    如果程序有错误,GCC提供了调试选项,比如-g来生成调试信息,配合gdb使用。

  8. 优化
    为了提高程序的性能,可以使用优化选项,如-O2-O3

这些是使用GCC和make进行基本编译和构建的步骤。对于更高级的用法,如跨平台编译、静态库和动态库的创建等,需要更深入的学习和实践。

进程

知识点

进程定义(进程和程序概念)

进程是运行中的程序或软件,用英文表示为process。它存在于内存中,运行结束后进程会消失。

  1. 进程与程序的区别
    • 进程是软件或程序运行后的产物。
    • 程序(或代码)是静态的实体,可以是代码文件或应用软件文件,存放在磁盘中。
  2. 守护进程(Daemon)

    Nginx、Apache、MySQL等都是常见的守护进程,它们在后台运行以提供网络服务或数据库服务。

    • 在Linux中称为Diamond,在Windows中称为后台进程。
    • 守护进程是为提供某种服务而持续运行的进程,如Linux下的SHD服务(可能指的是SSH服务)。
    • 常见的守护进程包括Nginx、Apache、MySQL等网络服务,以及FTP服务。
  3. 程序的运行与进程的产生
    • 程序或软件运行起来后,就形成了进程。
    • 守护进程是运行并提供服务的软件,它们在后台持续运行。
  4. 程序与代码文件
    • 程序或代码可以是可见的实体文件,存放在磁盘中。
    • 程序通过执行变成进程,而守护进程是持续运行的进程类型。

进程的生命周期、资源管理等

  1. 进程的生命周期:文档通过比喻人类的生命周期来介绍进程的工作流程,从创建到结束的过程。
  2. 子进程的产生:当有任务需要处理时,父进程可以生成子进程来分担任务。
  3. 属性继承:子进程会继承父进程的某些属性。
  4. 资源管理:子进程使用资源后,父进程负责回收资源。
  5. 僵尸进程:如果子进程结束后父进程没有正确回收资源,就会形成僵尸进程。
  6. 并发能力:文档提到子进程可以提高程序处理任务的并发能力。

实际应用举例说明:

  1. 进程生命周期
    • 比如,当你打开一个网页浏览器时,操作系统会为你的浏览器创建一个进程。当你关闭浏览器时,这个进程就会结束它的生命周期。
  2. 子进程的产生
    • 考虑一个服务器需要同时处理多个用户的请求。服务器的主进程可以生成多个子进程,每个子进程负责处理一个用户的请求。
  3. 属性继承
    • 在Unix或Linux系统中,如果一个文本编辑器进程启动了一个子进程来执行文件搜索任务,子进程可能会继承父进程的环境变量,如当前工作目录。
  4. 资源管理
    • 一个数据库服务进程(父进程)可能会创建多个子进程来管理对数据库的并发访问。当子进程完成任务后,父进程会负责关闭子进程打开的数据库连接。
  5. 僵尸进程
    • 如果一个应用程序的子进程异常终止,而父进程没有检查子进程的状态或回收资源,子进程可能会成为僵尸进程,这在系统中会表现为一个不再运行但仍然占用进程表条目的进程。
  6. 并发能力
    • 一个Web服务器(如Nginx)通过生成多个子进程或线程来同时处理多个并发的HTTP请求,提高了服务器的并发处理能力。

进程监控和管理

  1. 进程监控和管理:文档强调了在企业环境中监控和管理进程的重要性。
  2. ps命令ps命令用于查看当前系统中的进程,它提供了一个进程的快照。
  3. 快照概念ps命令在执行时会捕捉当前时刻的进程状态,类似于拍照。
  4. 命令格式:文档提到了不同操作系统的命令格式差异,如Unix、BSD等。
  5. 参数使用ps命令有多种参数,文档建议掌握常用的参数即可。
  6. ps命令的常用参数
    • ps -ef:显示所有进程的详细信息,包括用户ID、进程ID、父进程ID、CPU使用率、使用时间、终端和命令。
  7. 进程属性
    • UID:用户ID,表示运行进程的用户。
    • PID:进程ID,表示进程的唯一标识。
    • PPID:父进程ID,表示生成当前进程的父进程的标识。
    • CPU:CPU使用率,表示进程使用的CPU资源百分比。
    • TTY:终端,表示进程使用的终端。
    • TIME:使用CPU的时间。
    • COMMAND:启动进程的命令。
  8. 资源监控:强调了监控CPU和磁盘资源的重要性,以确保良好的用户体验。

实际应用举例说明:

  1. 使用ps命令监控进程
    • 假设你是一名系统管理员,需要检查系统中的进程以确定是否存在资源使用异常。你可以使用ps -ef命令来获取所有进程的列表,并查看它们的CPU使用率和内存使用情况。
  2. 资源使用监控
    • 如果你注意到系统中的CPU使用率异常高,你可以使用ps -ef | sort -k 7 -r命令(其中7是CPU使用率所在的列,-r表示降序排序)来找出CPU使用率最高的进程。
  3. 父进程和子进程的关系
    • 在调试程序时,如果一个程序崩溃了,你可能会想知道它的父进程是什么。使用ps -ef并查看PPID列可以帮助你追踪到父进程。
  4. 终端和进程关联
    • 如果你需要找出在特定终端上运行的进程,可以查看TTY列来确定哪些进程与该终端关联。
  5. 资源优化
    • 如果你发现某个进程的CPU使用率持续很高,可能需要优化程序代码或分配更多的CPU资源给该进程。

ps命令的使用

  1. ps命令的高级使用ps命令用于查看进程的详细信息,文档介绍了如何使用ps命令的参数来获取特定信息。

  2. ps命令的输出格式:文档提到了ps命令的输出可以是BID格式,并且可以通过参数调整来查看全路径。

  3. ps命令的参数

    • ps aux:显示所有进程的详细信息。
    • ps -eo:允许用户自定义输出字段。
  4. 进程的内存使用

    • VSZ:虚拟内存的大小。
    • RSS:物理内存的大小。
  5. 进程的状态:文档提到了进程的不同状态,如运行(R)、休眠(S)等。

    STAT:该进程目前的状态,主要的状态包括
    R :正在运行,或者是可被运行。
    S :正在中断睡眠中,可被某些信号(signal) 唤醒。
    D :不可中断睡眠。
    T :正在侦测或者是停止了。
    Z :已经终止,但是其父进程无法正常终止他,造成 zombie (疆尸) 进程的状态。
    + :前台进程。
    l :多线程进程。
    N :低优先级进程。
    < :高优先级进程。
    s :进程领导者。
    L : 已将页面锁定到内存中。

  6. 自定义输出字段:使用-eo参数可以指定想要显示的字段。

  7. 排序和过滤:使用管道和sorthead命令对ps命令的输出进行排序和过滤。

  8. 资源监控的重要性:文档强调了监控CPU和内存使用的重要性。

实际应用举例说明:

  1. 查看进程的虚拟和物理内存使用

    • 假设你想要监控系统中进程的内存使用情况,可以使用ps -eo pid,cmd,vsz,rss命令来获取进程的PID、启动命令、虚拟内存大小和物理内存大小。
  2. 监控高CPU使用率的进程

    • 如果你想找出系统中CPU使用率最高的进程,可以使用ps -eo pid,cpu,cmd | sort -k 3 -r | head -n 10命令来显示CPU使用率最高的前10个进程。
  3. 自定义输出字段

    • 有时候你可能只对特定的进程信息感兴趣,比如PID和命令名称,可以使用ps -eo pid,cmd来只显示这些信息。
  4. 使用AWK进行字段提取

    • 如果ps命令的输出字段不符合你的需求,可以使用AWK命令进行字段提取和格式化,例如ps -eo pid,cmd | awk '{print $1, $2}'
  5. 监控系统资源并进行自动化处理

    • 你可以编写一个脚本,使用ps命令结合awksort来监控系统资源,并根据资源使用情况自动执行某些操作,如重启进程或发送警告。
  6. 使用ps命令进行故障排查

    • 当系统响应缓慢时,可以使用ps命令查看哪些进程占用了大量的CPU或内存资源,以便于进行故障排查。
  7. 查看特定用户进程:使用ps -u username可以查看特定用户的进程。

  8. 后台运行进程:文档提到了使用sleep命令在后台运行进程。

  9. 杀死进程:使用kill命令可以终止进程。

  10. 服务器性能优化:在企业中,服务器性能优化主要关注CPU、内存、磁盘IO这三个核心指标。

实际应用举例说明:

  1. 查找特定用户的进程
    • 如果你想要查看系统中某个用户(比如oldboy)的进程,可以使用命令ps -u oldboy
  2. 杀死后台运行的进程
    • 如果你发现有一个sleep进程在后台运行,可能是测试或误操作产生的,可以使用kill命令加上进程ID来终止它。
  3. 资源管理与用户体验
    • 作为系统管理员,你需要监控系统资源的使用情况。如果发现CPU或内存使用率异常高,可能需要查找并分析这些占用资源的进程。例如,使用ps -eo pid,cmd,vsz,rss,%cpu --sort=-%cpu可以找出CPU使用率最高的进程。
  4. 服务器性能优化
    • 在企业环境中,你可能需要定期检查服务器的CPU、内存和磁盘IO使用情况。如果发现性能瓶颈,需要分析具体原因,可能是由于某个进程占用了过多资源,或者是应用程序的代码需要优化。在必要时,可能需要增加服务器的硬件资源。
  5. 业务调整
    • 如果通过技术手段无法解决资源占用问题,可能需要从业务层面进行调整,比如优化应用程序的算法,减少不必要的计算,或者在流量高峰期进行合理的负载分配。

pstree`命令

  1. pstree命令pstree命令以树形结构显示系统中的进程。
  2. 进程的启动流程pstree显示了进程之间的父子关系,从系统的初始进程(如systemd)开始。
  3. 命令选项
    • pstree:默认从初始进程开始显示所有进程信息。
    • pstree -a:展开进程,包括子进程。
    • pstree -p:显示每个进程对应的完整指令,包括启动进程、路径参数等。
    • pstree -c:显示所有进程,包括子进程。
    • pstree -u:指定用户名称,显示该用户的进程。
  4. 进程状态pstree可以展示进程的启动流程和状态。
  5. 进程号和用户:进程号是唯一的,而用户可以有多个进程。
  6. 实际应用:在企业中,pstree可以用于分析进程的层次结构,帮助理解进程之间的关系。

实际应用举例说明:

  1. 分析进程层次
    • 假设你想要查看系统中所有进程的层次结构,可以使用pstree命令。这有助于理解进程之间的父子关系,以及哪个进程是父进程,哪个是子进程。
  2. 查找特定用户的进程
    • 如果你想要查看系统中某个用户(比如nobody)的进程,可以使用pstree -u nobody命令。
  3. 查看进程的启动命令
    • 如果你需要查看特定进程(如nginx)是如何启动的,包括它的完整路径和参数,可以使用pstree -p nginx命令。
  4. 监控进程状态
    • 在系统性能分析或故障排查时,使用pstree可以帮助你快速识别哪些进程正在运行,哪些可能已经停止响应。
  5. 优化资源使用
    • 通过pstree -a查看所有进程及其子进程,可以帮助系统管理员识别资源使用率高的进程,并采取相应措施进行优化。

pgrep命令

这份文档的知识点可以概括为以下几个方面:

  1. pgrep命令pgrep是用来查找匹配条件的进程。
  2. 用法和功能
    • pgrep可以根据进程名、用户或其他属性来查找进程,并返回符合条件的进程的PID。
  3. 实际应用
    • pgrep可以用于快速查找特定用户的进程PID,或者根据进程名进行搜索。
  4. 与其他命令的结合使用
    • pgrep常与pstree等命令结合使用,以便快速获取特定进程的详细信息。
  5. 简化操作
    • 使用pgrep可以避免手动查找进程ID的繁琐步骤,特别是在处理定时任务或特定用户进程时。

实际应用举例说明:

  1. 查找特定用户的进程PID
    • 如果你需要找到用户nobody的所有进程PID,可以使用pgrep -u nobody命令。
  2. 查找特定名称的进程
    • 如果系统中有多个同名的进程在运行,你想要找出它们的PID,可以使用pgrep "process_name"
  3. 结合使用pstreepgrep
    • 如果你想要查看特定进程的树形结构,首先可以使用pgrep找到该进程的PID,然后使用pstree -p PID来显示以该PID为中心的进程树。
  4. 自动化脚本中的使用
    • 在编写自动化脚本时,你可能需要根据进程名来杀死或重启进程。使用pgrep可以方便地获取这些进程的PID,然后传递给killkillall命令。
  5. 监控定时任务
    • 如果你想要监控系统定时任务(如cron作业)的执行情况,可以使用pgrep来查找这些定时任务的PID,然后进一步分析或管理。

top命令

这份文档的知识点可以概括为以下几个方面:

  1. top命令top命令用于实时显示系统中各个进程的资源占用情况。
  2. top命令的参数:文档提到top命令的参数相对简单,大多数情况下直接使用命令本身即可。
  3. top命令的快捷键:强调了记住top命令的快捷键的重要性,这些快捷键有助于用户更高效地使用top命令。
  4. top命令的输出
    • 前五行输出提供了关键的系统状态信息。
  5. 系统时间与运行时间
    • 第一行输出显示当前系统时间和系统自启动以来的运行时间。
  6. 系统负载(Load Average)
    • load average显示了过去1分钟、5分钟、15分钟的平均负载,是衡量系统繁忙程度的重要指标。
  7. 其他相关命令
    • wuptime命令也可以提供系统运行时间和当前登录用户的信息。

实际应用举例说明:

  1. 实时监控系统资源

    • 作为系统管理员,你可以使用top命令来实时监控CPU、内存使用率,以及哪些进程占用资源最多。
  2. 分析系统负载

    • 如果你注意到系统响应变慢,可以使用top命令查看系统负载。如果负载超过了CPU核心数,可能表明系统过载。
  3. 识别长时间运行的进程

    • 使用top命令可以找出那些长时间占用CPU或内存的进程,这些进程可能需要被优化或重启。
  4. 响应用户支持请求

    • 当用户报告系统性能问题时,你可以使用top命令快速查看是否有异常进程影响系统性能,并采取相应措施。
  5. 教学和培训

    • 在教育环境中,top命令可以作为教授系统监控和性能分析的重要工具。
  6. 系统维护和规划

    • 通过定期使用top命令,系统管理员可以识别系统资源的使用模式,并据此进行系统维护和资源规划。
  7. top命令的用途top命令用于实时显示系统中各个进程的资源占用情况。

  8. 进程状态

    • TASK:表示任务或进程。
    • 运行中(r)、睡眠(s)、停止(t)、僵尸(z)状态的进程。
  9. CPU使用情况

    • 用户空间(us):应用程序占用的CPU百分比。
    • 系统空间(sy):内核与硬件操作相关的CPU百分比。
  10. CPU负载模拟

    • 使用stress命令模拟CPU和IO负载。
  11. 内存状态

    • 总内存、已使用内存、缓存和缓冲区内存。
  12. free命令:用于查看内存状态,包括交换分区(swap)的使用情况。

  13. top命令的快捷键

    top必会快捷键指令(老男孩抓重点思想)
    1 #查看系统核心总数, 类似于 lscpu(CPUs)
    q #退出top
    M #按内存使用百分比排序输出
    P #按CPU使用百分比排序输出
    R #对已排序的列反转排序
    ###抓重点显示,有助于查看的指令。
    x #高亮显示排序的列
    z #以彩色信息展示
    b #高亮显示处于R状态的进程

    或< #改变排序的列,依然高亮显示。
    #top熟悉了解的快捷键
    h #查看帮助
    l,t,m #显示/隐藏前5行的数据输出

  14. 系统负载(Load Average)

    • 表示过去1分钟、5分钟、15分钟的平均负载。
  15. 磁盘和IO状态

    • 磁盘IO操作的百分比,高百分比可能表明磁盘性能问题。
  16. 进程优先级

    • NI:nice值,表示进程的优先级。

实际应用举例说明:

  1. 监控系统资源
    • 使用top命令可以实时监控系统中CPU、内存的使用情况,帮助系统管理员快速定位资源瓶颈。
  2. 模拟负载
    • 使用stress命令可以模拟高负载情况,用于压力测试和性能评估。
  3. 分析磁盘性能
    • 如果top显示磁盘IO百分比很高,可能表明磁盘性能存在问题,需要进一步分析磁盘使用情况。
  4. 管理进程
    • 通过top可以查看进程的PID和状态,结合kill命令可以管理或终止不正常的进程。
  5. 内存监控
    • 使用free -m命令可以查看内存的使用情况,包括已使用内存、空闲内存、缓存和缓冲区内存。
  6. 系统负载分析
    • 系统负载是衡量系统繁忙程度的重要指标,如果长时间超过CPU核心数,可能需要考虑优化应用程序或增加硬件资源。
  7. 面试常见问题
    • 在技术面试中,可能会询问如何使用top命令查看CPU核心数,如何通过top命令监控系统资源等。
  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值