Linux-----进程管理面试题

发布时间:2026/8/14 15:41:37
Linux-----进程管理面试题 怎么排查Linux服务器卡顿按从简单到复杂顺序查先看整体负载uptime看系统忙不忙查看系统开机时长、当前时间、登录用户数、1/5/15分钟平均负载查 CPU是不是某个程序疯狂跑占满 CPUtop查内存内存不够会不会在疯狂读写硬盘 Swapfree -h查磁盘 IO硬盘读写卡死最容易忽略磁盘慢服务器直接卡iostat -x 1 磁盘IO性能 iotop 哪个进程读写磁盘查磁盘空间df -h看磁盘是不是 100% 满了查网络带宽打满、大量连接拖慢系统ip ss端口 ping连通性 traceroute路由 iftop看网络流量查内核日志dmesg看有没有 OOM 杀进程、硬件报错、内核崩溃journalctl 内核日志最后查有没有定时任务跑大量脚本、挖矿病毒。交换Swap内存不足时系统把内存数据挪到硬盘Swap分区这个行为叫 换出(swap out)再读回来叫 换入(swap in)free后怎么查找占用高的进程输入free -h先看内存整体敲top命令按大写M自动按内存从高到低排序前面的就是吃内存大户也可以直接一条命令列出ps aux --sort-rss装个 htop 更直观鼠标点一下就能按内存排序。怎么看我当前的这个 Linux 系统的 CPU 详细信息是多少最简单一条lscpu直接显示几颗物理 CPU、多少核心、多少超线程、主频、缓存大小、架构只想看 CPU 型号cat /proc/cpuinfo | grep model name数核心看有多少个 processor 就是逻辑 CPU 总数。可用内存怎么看主要关注哪些数据命令free -h只记 3 个关键点available最关键系统实打实还能分给新程序用的内存别看 free 那一列Swap used交换分区如果一直在涨说明物理内存不够用了硬盘疯狂读写服务器必卡buff/cacheLinux 闲着也是闲着拿多余内存加速硬盘读写这个数值大完全不用慌内存不够系统会自动收回来。判断available 充足、Swap 几乎不用 内存健康Swap 一直在跳涨 内存瓶颈。Linux中查看系统性能的命令CPUuptime、top、mpstat、pidstat内存free、vmstat磁盘 IO卡顿重灾区iostat、iotop、df网络ss、iftop日志查异常dmesg、journalctlCPU出现问题怎么排查先用 uptime 看负载4 核机器负载长期大于 4就是 CPU 扛不住打开 top 看三列us用户态高业务代码死循环、疯狂计算程序本身问题sy内核态高系统内核频繁干活、频繁调用系统接口waiowait 高根本不是 CPU 坏了是硬盘读写太慢CPU 在干等磁盘top 按大写 P按 CPU 占用排序找到占用最高的进程 PID看进程里面哪个线程耗资源排查代码死循环、定时任务扎堆执行、挖矿程序。CPU爆满怎么查、内存泄漏怎么定位1CPU 爆满排查看负载 → top 区分是纯计算还是等硬盘 IO揪出高占用进程 → 拆解内部线程查代码 bug死循环、无限递归、定时任务、恶意进程。2内存泄漏内存泄漏程序申请了一块内存用完之后代码忘了还给系统越跑占用越多慢慢把内存吃光。排查步骤持续观察 freeavailable 一点点往下掉Swap 慢慢上涨top 按 M 排序锁定内存只涨不跌的那个进程对应语言工具查 Java 用 jmap 导出堆文件分析C 语言用 valgrindPython 用内存检测模块改代码关闭没释放的连接、清空无限膨胀的缓存、销毁没用的对象。什么是oom有 swap 为什么还会 OOM killer 杀进程解释 OOMOOM 内存用光了。Linux 内核有个自保程序叫 OOM Killer为了防止整个服务器彻底死机直接把最吃内存的进程干掉腾出内存救系统。有 Swap 还被杀的 4 个原因Swap 是硬盘速度比内存慢几万倍如果大量往 Swap 挪数据服务器直接卡死内核不等慢慢交换直接杀程序最快系统参数 swappiness 设置太低告诉内核尽量别用 Swap内存一耗尽直接触发 OOM程序一次性要一大块连续内存Swap 在硬盘上是零散空间凑不出连续大块内存分配失败触发杀进程内核自己内存泄露了驱动 / 内核模块占死内存就算应用没占满内存也会触发 OOM。查看历史被杀记录dmesg -T | grep oom什么是swap他和虚拟内存是一种东西吗Swap交换分区在硬盘上划出来一块空间当物理内存不够时系统把暂时不用的数据扔到硬盘里腾内存给正在活跃的程序用。缺点就是巨慢。虚拟内存是一整套操作系统的管理规则。简单说让软件以为自己拥有超大内存不用管实际物理内存条多大里面包含分页、缺页调用、Swap 硬盘缓存这一整套机制。一句话总结虚拟内存是一套大规则Swap 只是这套规则里用到的硬盘存储空间Swap 属于虚拟内存的一部分不能完全划等号。Cpu的使用率计算原理是什么Linux 内核有个像秒表一样的计数器不停在跳把 CPU 每时每刻干的活分成 7 类跑用户程序、跑内核、闲着发呆、等硬盘、处理中断等等隔一小段时间读两次这个秒表数字算出差值用公式CPU使用率 总干活时间 - 纯发呆空闲时间÷ 总运行时间 ×100%补充 单核 CPU 满负荷是 100%8 核跑满 top 会显示 800%按键盘数字 1可以看到每一个核心各自占用多少。free 这个命令它输出的结果当中它的 free 那行和 available 那行这两列的区别是什么呢1. Mem.freefree 那一列字面意义上彻底空着、啥都没放的裸内存。 Linux 系统有个习惯空闲内存不会白白浪费会拿去做磁盘缓存buff/cache加速读写所以 free 数值通常很小这个数字参考价值极低不能用来判断够不够内存。2. available最核心系统真正可以立刻拿出来分给新程序的总内存组成 狭义 free 内存 可以快速回收的 buff/cache 缓存内存 可回收的共享内存。一句话记死free剩在手里完全闲置的零花钱available零花钱 存在余额宝里随时能取出来的钱 判断内存够不够只看available别看 free。如何排查一个系统的CPU负载情况你说uptime使用uptime命令后有几个数展示分别代表什么。举个例子输出16:25 up 8 days, 4:12, 2 users, load average: 0.35, 0.41, 0.30一段一段翻译16:25服务器现在几点up 8 days, 4:12机器开机连续运行了 8 天 4 小时 12 分钟2 users目前有 2 个人登录了这台服务器load average: 0.35, 0.41, 0.30三个核心负载数字第一个最近 1 分钟的平均负载第二个最近 5 分钟的平均负载第三个最近 15 分钟的平均负载uptime的负载数是怎么计算的和CPU核数是什么关系。负载到底统计啥系统统计等着要用 CPU 干活的进程总数平均值包括三种 正在 CPU 跑的程序、排着队等 CPU 的程序、卡死在磁盘 IO 动不了的程序。 内核定时采样算出来的平均值。和 CPU 核数最简单理解举例子4 核 CPU负载 4CPU 刚好全部拉满刚刚好负载4CPU 还有空余很轻松负载4活太多任务排队堵了服务器压力大口诀负载数字等于 CPU 核心数就是满载线CPU使用率越高uptime越高吗不一定完全两码事情况 1正常挂钩最常见程序疯狂算东西、死循环、打包编译CPU 跑满任务排队负载跟着涨。情况 2负载很高CPU 却很闲经典坑大量程序卡在读写硬盘IO 阻塞进程一动不动不耗 CPU但系统会把它算进负载里。 现象load 飘很高top 看 CPU 使用率几乎为 0。情况 3CPU 很高负载却很低4 核服务器只跑一个单线程程序占满其中 1 个核心 整体 CPU 使用率 25%负载只有 1 左右数字看着一点不高。