Linux---进程

server/2025/3/16 8:48:38/

Linux进程管理

一、基础进程查看命令

1. ps 命令(Process Status)

常用组合
ps aux          # BSD风格,显示所有进程(含用户信息)
ps -ef          # SystemV风格,完整格式输出
ps -l           # 长格式显示进程详细信息
ps -eF          # 显示完整格式及线程信息
ps -eLf         # 以树状结构显示进程父子关系
参数说明
参数描述
-a显示所有终端的进程
-u显示用户相关信息(用户名、CPU时间等)
-x显示无控制终端的进程
-f显示完整格式(含父子关系)
-L显示线程信息(需配合-e使用)
输出字段解析
字段说明
USER进程所有者用户名
PID进程ID
%CPUCPU占用百分比
%MEM内存占用百分比
VSZ虚拟内存大小(KB)
RSS常驻内存大小(KB)
TTY控制终端
STAT进程状态(R/S/Z等)
START进程启动时间
TIME累计CPU时间
COMMAND启动命令

2. top 命令(动态监控)

交互命令
按键功能
M按内存占用排序
P按CPU占用排序
T按累计CPU时间排序
k终止进程(输入PID)
r调整进程优先级
q退出监控
显示区域说明
  • 系统信息区:负载平均值、运行时间、进程总数等
  • 进程列表区:实时更新的进程信息(可自定义显示列)
  • 资源统计区:内存/交换分区使用情况

3. htop 命令(增强版top)

核心特性
  • 支持鼠标操作
  • 可视化进程树结构
  • 实时内存/CPU使用图表
  • 过滤功能(F4文本过滤,F5树状过滤)
快捷键
按键功能
F2自定义显示选项
F3搜索进程
F6选择排序字段
F9发送信号(如SIGKILL
F10退出

二、进程查找与终止

1. 进程查找

命令示例描述
pgreppgrep -u root查找root用户的进程
pgrep -lpgrep -l nginx显示进程名和PID
pgrep -xpgrep -x firefox精确匹配进程名
pgrep -Ppgrep -P 1234查找父进程ID为1234的进程
pidofpidof sshd获取sshd进程ID

2. 进程终止

命令示例描述
killkill -9 1234强制终止进程(PID=1234)
pkillpkill -f "java -jar"按命令行内容终止进程
pkill -upkill -u $USER终止当前用户的所有进程
killallkillall -u mysql终止mysql用户的所有进程
killall -rkillall -r "apache.*"正则匹配终止进程

三、作业控制

1. 作业管理命令

jobs                # 查看后台作业列表
bg %1               # 将作业1放到后台运行
fg %1               # 将作业1调回前台
作业状态说明
符号状态
+当前作业
-最近作业
Running运行中
Stopped暂停(可恢复)
Done完成(但未删除)

四、进程优先级管理

1. 优先级调整

命令示例描述
nicenice -n 10 ./script.sh以优先级10启动进程(默认0)
renicerenice -5 1234将进程1234优先级提高5级
优先级范围
  • -20(最高优先级)到19(最低优先级)
  • 只有root用户可设置负优先级

五、内存与系统状态监控

1. 内存分析

free -h             # 人性化显示内存使用情况(KB/MB/GB)
free -m             # 以MB为单位显示
free -s 5           # 每5秒刷新一次

2. 虚拟内存统计

vmstat 2 5          # 每2秒刷新,共5次(显示CPU/内存/IO等)

3. 综合监控工具

dstat -cdngy        # 显示CPU、磁盘、网络、内存、页交换

六、其他核心命令

命令功能
uptime显示系统运行时间和负载(1/5/15分钟平均)
w显示当前登录用户及进程信息
who显示当前登录用户详细信息
last查看历史登录记录(含时间/IP)
lastb查看失败登录尝试记录

七、进程状态解析

状态说明
D不可中断睡眠(通常为IO等待)
R运行中或就绪状态
S可中断睡眠(等待事件完成)
T暂停或被跟踪(如Ctrl+Z
Z僵尸进程(需终止父进程)
N低优先级进程

八、高级技巧

  1. 查看线程

    ps -eLf | grep java    # 显示Java进程的线程信息
    
  2. 实时监控指定进程

    watch -n 1 "ps -eo pid,user,%mem,%cpu,command | grep firefox"
    
  3. 按内存排序进程

    ps aux --sort -%mem     # 降序排列内存占用
    
  4. 监控进程树

    htop -p $(pgrep nginx)  # 显示Nginx进程及其子进程
    

九、常见问题处理

问题解决方案
僵尸进程终止父进程(kill <父PID>)或重启服务
高CPU占用使用top定位进程→分析代码/日志
内存泄漏结合free/vmstat/dstat诊断
进程无响应先尝试kill -15,无效再用kill -9

十、性能优化建议

  1. 僵尸进程清理:定期检查并终止僵尸进程的父进程
  2. 资源限制:使用nice/renice控制高负载进程优先级
  3. OOM Killer:调整/proc/sys/vm/panic_on_oom参数避免系统崩溃
  4. 资源隔离:利用cgroups限制特定进程的CPU/内存使用
  5. 服务监控:使用systemdsupervisor管理关键服务进程

:所有命令可通过 man [命令]info [命令] 查看完整文档。


http://www.ppmy.cn/server/175376.html

相关文章

[Python爬虫系列]bilibili

[Python爬虫系列]bilibili 具体逻辑 bv号 -> 处理多P视频 -> 拿到cid -> sign -> 请求下载&#xff0c;其中sign参考前人算法&#xff08;https://github.com/SocialSisterYi/bilibili-API-collect&#xff09; b站视频下载链接 https://api.bilibili.com/x/pl…

在线 SQL 转 SQLAlchemy:一键生成 Python 数据模型

一款高效的在线 SQL 转 SQLAlchemy 工具&#xff0c;支持自动解析 SQL 语句并生成 Python SQLAlchemy 模型代码&#xff0c;适用于数据库管理、后端开发和 ORM 结构映射。无需手写 SQLAlchemy 模型&#xff0c;一键转换 SQL 结构&#xff0c;提升开发效率&#xff0c;简化数据库…

STC89C52单片机学习——第20节: [8-2]串口向电脑发送数据电脑通过串口控制LED

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.03.15 51单片机学习——第20节: [8-2]串口向电脑发送数据&电脑通过串口控制LED 前言…

React 和 Vue 框架设计原理对比分析

一、核心设计对比 维度ReactVue核心思想函数式编程&#xff08;FP&#xff09;渐进式框架&#xff08;Progressive&#xff09;设计目标构建灵活可扩展的 UI 层降低前端开发复杂度&#xff0c;提供开箱即用体验数据驱动单向数据流&#xff08;props state&#xff09;双向数据…

学习MDA规范_5.统一建模语言(UML)

本文主要介绍了统一建模语言&#xff08;UML&#xff09;在模型驱动架构&#xff08;MDA&#xff09;中的作用和相关规范。强调了UML在MDA中的重要地位&#xff0c;特别是UML 2.0版本的发布和改进。同时&#xff0c;也提到了OMG成员和非成员如何获取UML相关文档&#xff0c;以及…

激活函数和批归一化(BatchNorm)

简单记录学习~。在神经网络中&#xff0c;激活函数和批归一化&#xff08;BatchNorm&#xff09;的配合使用是为了解决‌数据分布偏移‌和‌梯度不稳定‌问题。以下是逐步解释&#xff1a; 1. 激活函数为何导致值向上下限移动&#xff1f;‌ 以Sigmoid/Tanh为例‌&#xff1a…

tsfresh:时间序列特征自动提取与应用

tsfresh&#xff1a;时间序列特征自动提取与应用 本文系统介绍了 tsfresh 技术在 A 股市场数据分析与量化投资中的应用。从基础特征提取到高级策略开发&#xff0c;结合实战案例&#xff0c;详细讲解了如何利用 tsfresh 构建量化投资策略&#xff0c;并优化风险控制&#xff0c…

【NoSql】Redis

Ubuntu22.04版本编译安装 Redis Redis version7.4.2 #解压源码包 tar -zxvf redis-stable.tar.gz cd redis-stable/ make make install安装好了后&#xff0c;可执行文件默认会放入/usr/local/bin/ rootluobozi:~ ls /usr/local/bin/* /usr/local/bin/redis-cli /usr/local/…