day015-进程管理
文章目录
- 1. 服务开机自启动
- 2. 进程
- 3. 僵尸进程
- 3.1 处理僵尸进程
- 3.2 查看僵尸进程
- 3.2 排查与结束僵尸进程全流程
- 4. 孤儿进程
- 5. 进程管理
- 5.1 kill三剑客
- 5.2 后台运行
- 6. 进程监控命令
- 6.1 ps
- 6.1.1 ps -ef
- 6.1.2 ps aux
- 6.1.3 VSZ、RSS
- 6.1.4 进程状态
- 6.1.5 进程、线程
- 6.2 top
- 6.2.1 cpu使用情况的各种指标:
- 6.2.2 top命令快捷键
- 6.3 htop
- 7. ps、top应用案例
- 7.1 过滤出叫crond/sshd的进程
- 7.2 过滤sshd进程数量
- 7.3 输出rsyslog进程的pid
- 7.4 top命令非交互模式与过滤指定内容
- 7.5 取出系统登录用户数量
- 7.6 取出僵尸进程数量
- 8. 思维导图
- 9. 踩坑记录
- 9.1 为啥有些命令选项有没有‘-’都行(tar ,ps aux),而有些命令选项有无‘-’差异很大(ps -ef)?
- 9.2 ps -ef和ps ef的差别?
1. 服务开机自启动
/etc/rc.d/rc.local
:用于在系统启动时执行自定义命令或脚本。- 将服务的启动命令写入该文件即可,要有执行权限。
- Ubuntu:
/etc/rc.local。需要自己创建文件。
2. 进程
- 程序/软件运行后就是进程
- 进程在内存中运行
- 守护进程/服务:一直运行的进程
3. 僵尸进程
- 进程因为一些原因脱离系统控制,但是进程又没有正常退出,并一直占用系统的资源(cpu、内存),这种就是僵尸进程。
- 僵尸进程处于运行中但是不受控制。
- 僵尸进程要及时排查与处理,否则僵尸进程增多会导致系统大量资源被占用,系统负载变高。
3.1 处理僵尸进程
- kill或kill -9一般对僵尸进程是失效的,
kill
命令的作用是向进程发送信号(如SIGKILL
),但僵尸进程无法响应信号(因为它已经死了)。 - 结束僵尸进程的父进程:
- 1.如果僵尸进程的父进程是主进程(pid=1),则只能重启Linux(在业务低谷期)。
- 2.如果僵尸进程的父进程不是主进程,通过kill命令结束父进程即可。
3.2 查看僵尸进程
- top
- 过滤出系统中的僵尸进程
- 程序状态Z表示是僵尸进程
[root@oldboy99-Kylin ~]# ps aux |grep 'Z'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3927 0.0 0.0 0 0 pts/0 Z 17:47 0:00 [zombie] <defunct>
root 3937 0.0 0.0 213140 880 pts/0 S+ 17:50 0:00 grep --color Z
# 取第8列中含有‘Z’的行
[root@oldboy99-Kylin ~]# ps aux |awk '$8~/Z/'
root 3927 0.0 0.0 0 0 pts/0 Z 17:47 0:00 [zombie] <defunct>
3.2 排查与结束僵尸进程全流程
# 1.检查是否有僵尸进程
top
# 2.查看哪个进程是僵尸进程,记录下pid
ps aux |grep 'Z'
# 3.查看僵尸进程的上级进程
pstree -p
ps -ef # 查看第3列
# 4.如果上级进程不是主进程
kill + pid结束进程
4. 孤儿进程
- 某个子进程的父进程,因为特殊原因退出了,但是子进程还在。这个子进程就是孤儿进程。
- 对系统影响不大
- 解决:重启服务
5. 进程管理
5.1 kill三剑客
命令 | 说明 |
---|---|
kill | kill pid:结束对应的进程; kill -9:强制结束进程(-9是一种信号) |
pkill | 根据进程名字过滤结束进程,很有可能误杀进程 |
killall | 根据名字终结进程 |
5.2 后台运行
- 前台运行:命令在命令行中运行,无法执行其他命令。需要等待。
- 后台运行:一些命令在前台运行的时候连接断开或网络断开,前台运行的命令会结束。后台运行的命令则没有影响。
后台运行 | 说明 |
---|---|
命令 & | 后台运行,远程连接断开也会结束 |
nohup 命令 & | 后台运行,连接断开也不结束,默认会把结果输出到当前目录下nohup.out文件中 |
devops01@sunkexu-aliyun:~$ nohup ping qq.com >> qqlog.txt &
[1] 18148
devops01@sunkexu-aliyun:~$ nohup: ignoring input and redirecting stderr to stdoutdevops01@sunkexu-aliyun:~$ tail -f qqlog.txt
PING qq.com (203.205.254.157) 56(84) bytes of data.
64 bytes from 203.205.254.157 (203.205.254.157): icmp_seq=3 ttl=44 time=124 ms
64 bytes from 203.205.254.157 (203.205.254.157): icmp_seq=5 ttl=44 time=124 ms
……
6. 进程监控命令
- ps:查看进程静态信息
- top:查看进程动态、静态信息
6.1 ps
6.1.1 ps -ef
6.1.2 ps aux
6.1.3 VSZ、RSS
1.swap是什么?
交换分区(虚拟内存):物理内存不足的时候,swap临时充当内存,防止系统崩溃。
2.VSZ,RSS 单位kb
VSZ(virtual size)表示系统内存总大小:swap+物理内存;
RSS表示实际物理内存大小。
6.1.4 进程状态
进程状态符(STAT) | 说明 |
---|---|
Z | zombie,僵尸进程 |
R | running,运行中 |
S | sleeping,睡眠状态。程序正在等待某个资源,一旦获取就会进入运行状态。 |
D | 不可中断的休眠;进程正在等待某些系统调用的完成(IO操作) |
T | 后台挂起(暂停)的进程(ctrl+z) |
+ | 前台运行的进程 |
s | 表示该进程是主进程 |
l | 表示该进程支持线程 |
< | 表示该进程拥有高优先级 |
6.1.5 进程、线程
- 进程:process,运行的程序或软件就相当于1个进程。进程就像一个公司,用于独立的资源(cpu/内存/文件)
- 线程:thread,线程是进程中的执行单元。线程就像公司中的一个一个的员工,共享公司的资源(内存/文件)
6.2 top
- top是交互式命令,不适合直接过滤
6.2.1 cpu使用情况的各种指标:
指标 | 单词 | 说明 |
---|---|---|
us | user | 用户程序占用的cpu时间百分比 |
sy | system | 系统内核程序占用的cpu时间百分比 |
ni | nice | 低优先级用户进程占用的cpu时间百分比 |
id | idle(空闲) | cpu空闲时间百分比 |
wa | iowait | cpu等待IO操作完成的时间百分比 |
hi | hardware irq(硬件中断) | 硬件中断(键盘、磁盘响应)占用的cpu时间百分比 |
si | software irq(软件中断) | 软件中断(如网络数据包处理)占用的cpu时间百分比 |
st | steal(偷走) | 虚拟机被宿主机‘偷走’的cpu时间百分比 (仅在虚拟环境出现,表示资源被其他虚拟机占用) |
6.2.2 top命令快捷键
快捷键 | 说明 |
---|---|
M | 按内存使用率排序 |
P | 按cpu使用率排序 |
空格 | 立刻更新 |
1 | 显示所有cpu核心的使用情况 |
z(小写),x(小写),用 <或> 选择列 | 显示颜色,可选择不同的列排序 |
6.3 htop
- 可直接用鼠标选择不同的列排序
7. ps、top应用案例
7.1 过滤出叫crond/sshd的进程
[root@oldboy99-Kylin ~]# ps -ef |grep -E 'sshd|crond'
root 842 1 0 12:58 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 862 1 0 12:58 ? 00:00:00 /usr/sbin/crond -n
root 883 842 0 12:58 ? 00:00:00 sshd: root [priv]
root 1154 883 0 12:58 ? 00:00:01 sshd: root@pts/0
root 1817 1159 0 14:51 pts/0 00:00:00 grep --color -E sshd|crond
- 执行当前命令也是一个进程,所以把当前命令也过滤出来了。
- 解决方法:使用正则表达式,将过滤参数的第一个字母加上中括号
[root@oldboy99-Kylin ~]# ps -ef |grep -E '[s]shd|[c]rond'
root 842 1 0 12:58 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 862 1 0 12:58 ? 00:00:00 /usr/sbin/crond -n
root 883 842 0 12:58 ? 00:00:00 sshd: root [priv]
root 1154 883 0 12:58 ? 00:00:01 sshd: root@pts/0
- 原理:加上中括号,就是[s]shd,就不会匹配sshd了。
7.2 过滤sshd进程数量
[root@oldboy99-Kylin ~]# ps -ef |grep -E 'sshd|crond' |grep -v 'grep' |wc -l
4
[root@oldboy99-Kylin ~]# ps -ef |grep -E '[s]shd|[c]rond' |wc -l
4
- 推荐直接使用方法二。
7.3 输出rsyslog进程的pid
[root@oldboy99-Kylin ~]# ps -ef |grep '[r]syslog' |awk '{print $2}'
891
7.4 top命令非交互模式与过滤指定内容
- top命令默认是交互模式便于展示结果,但是不方便进行过滤或查找。
- top -bn1 :非交互式模式,显示1次top信息
- -b:batch,显示当前所有信息
- -n:显示多少次
7.5 取出系统登录用户数量
[root@oldboy99-Kylin ~]# w |awk 'NR==1{print $4}'
1
[root@oldboy99-Kylin ~]# top -bn1 |grep 'user' |awk '{print $6}'
1
7.6 取出僵尸进程数量
[root@oldboy99-Kylin ~]# top -bn1 |grep 'zombie' |awk '{print $(NF-1)}'
0
8. 思维导图
【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX
9. 踩坑记录
9.1 为啥有些命令选项有没有‘-’都行(tar ,ps aux),而有些命令选项有无‘-’差异很大(ps -ef)?
- 选项前的‘-’表示语法分隔符,它的作用并不统一,而是受命令作者或不同命令语法标准的影响。
- GNU的命令强制规定加‘-’
- 早先unix风格的命令选项一般不加‘-’
9.2 ps -ef和ps ef的差别?
- ps -ef:显示所有进程及信息
- ps ef:以进程树的形式显示进程信息,一般不用
相关文章:

day015-进程管理
文章目录 1. 服务开机自启动2. 进程3. 僵尸进程3.1 处理僵尸进程3.2 查看僵尸进程3.2 排查与结束僵尸进程全流程 4. 孤儿进程5. 进程管理5.1 kill三剑客5.2 后台运行 6. 进程监控命令6.1 ps6.1.1 ps -ef6.1.2 ps aux6.1.3 VSZ、RSS6.1.4 进程状态6.1.5 进程、线程 6.2 top6.2.1…...
traceroute命令: -g与-i 参数
[rootwww ~]# traceroute [选项与参数] IP 选项与参数:-i 装置:用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到这个参数;*举例来说,你有两条 ADSL 可以连接到外部,那你的主机会有两…...

POWER BI添加自定义字体
POWER BI添加自定义字体 POWER BI内置27种字体,今天分享一种很简单的添加自定义字体的方法。以更改如下pbix文件字体为例: 第一步:将该pbix文件重命名为zip文件并解压,找到主题json文件,如下图所示: 第二步…...
SpringAI更新:废弃tools方法、正式支持DeepSeek!
AI 技术发展很快,同样 AI 配套的相关技术发展也很快。这不今天刚打开 Spring AI 的官网就发现它又又又又更新了,而这次更新距离上次更新 M7 版本才不过半个月的时间,那这次 Spring AI 给我们带来了哪些惊喜呢?一起来看。 重点升级…...

协议不兼容?Profinet转Modbus TCP网关让恒压供水系统通信0障碍
在现代工业自动化领域中,通信协议扮演着至关重要的角色。ModbusTCP和Profinet是两种广泛使用的工业通信协议,它们各自在不同的应用场合中展现出独特的优势。本文将探讨如何通过开疆智能Profinet转Modbus TCP的网关,在恒压供水系统中实现高效的…...

ChatGPT + DeepSeek 联合润色的 Prompt 模板指令合集,用来润色SCI论文太香了!
对于非英语母语的作者来说,写SCI论文的时候经常会碰到语法错误、表达不够专业、结构不清晰以及术语使用不准确等问题。传统的润色方式要么成本高、效率低,修改过程又耗时又费力。虽然AI工具可以帮助我们来润色论文,但单独用ChatGPT或DeepSeek都会存在内容泛泛、专业性不足的…...

全栈项目搭建指南:Nuxt.js + Node.js + MongoDB
全栈项目搭建指南:Nuxt.js Node.js MongoDB 一、项目概述 我们将构建一个完整的全栈应用,包含: 前端:Nuxt.js (SSR渲染)后端:Node.js (Express/Koa框架)数据库:MongoDB后台管理系统:集成在同…...

RAGFlow Arbitrary Account Takeover Vulnerability
文章目录 RAGFlowVulnerability Description[1]Vulnerability Steps[2]Vulnerability Steps[3]Vulnerability Steps RAGFlow RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine developed by Infiniflow, focused on deep document understanding and d…...

Python 之 Flask 入门学习
安装 Flask 在开始使用 Flask 之前,需要先安装它。可以通过 pip 命令来安装 Flask: pip install Flask创建第一个 Flask 应用 创建一个简单的 Flask 应用,只需要几行代码。以下是一个最基本的 Flask 应用示例: from flask imp…...
微服务,服务粒度多少合适
项目服务化好处 复用性,消除代码拷贝专注性,防止复杂性扩散解耦合,消除公共库耦合高质量,SQL稳定性有保障易扩展,消除数据库解耦合高效率,调用方研发效率提升 微服务拆分实现策略 统一服务层一个子业务一…...

【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新
概述 在历经三周的阶段性开发后,RagflowPlus顺利完成既定计划,正式发布v0.3.0版本。 开源地址:https://github.com/zstar1003/ragflow-plus 新功能 1. 用户会话管理 在后台管理系统中,新增用户会话管理菜单。在此菜单中&…...

使用PocketFlow构建Web Search Agent
前言 本文介绍的是PocketFlow的cookbook中的pocketflow-agent部分。 回顾一下PocketFlow的核心架构: 每一个节点的架构: 具体介绍可以看上一篇文章: “Pocket Flow,一个仅用 100 行代码实现的 LLM 框架” 实现效果 这个Web S…...
安卓基础(Bitmap)
Bitmap 是 Android 开发中一个非常重要的类,用于表示图像数据。它是一个位图对象,存储了图像的像素信息,可以用于显示、处理和保存图像。Bitmap 提供了丰富的 API,用于操作和处理图像数据。 1. Bitmap 的作用 显示图像࿱…...

记录:echarts实现tooltip的某个数据常显和恢复
<template><div class"com-wapper"><div class"func-btns"><el-button type"primary" plain click"showPoint(2023)">固定显示2023年数据</el-button><el-button type"success" plain cli…...

八股文--JVM(1)
⭐️⭐️JVM内存模型 程序计数器:可以看作是当前线程所执行的字节码的行号指示器,用于存储当前线程正在执行的 Java 方法的 JVM 指令地址。如果线程执行的是 Native 方法,计数器值为 null。是唯一一个在 Java 虚拟机规范中没有规定任何 OutOf…...

从RPA项目说说RPC和MQ的使用。
去年我负责一个 RPA(机器人流程自动化)项目,帮某电商公司搭建订单处理系统。项目里有个场景特别有意思:当用户下单后,系统需要同时触发库存扣减、物流调度、积分发放三个模块。一开始我们想都没想,直接用 R…...
【大模型面试每日一题】Day 21:对比Chain-of-Thought(CoT)与Self-Consistency在复杂推理任务中的优劣
【大模型面试每日一题】Day 21:对比Chain-of-Thought(CoT)与Self-Consistency在复杂推理任务中的优劣 📌 题目重现 🌟 面试官:我们在数学推理和逻辑推理任务中发现,Self-Consistency方法比传统…...

UUG杭州站 | 团结引擎1.5.0 OpenHarmony新Feature介绍
PPT下载地址:https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中,Unity中国OpenHarmony技术负责人刘伟贤带来演讲《团结引擎1.5.0 OpenHarmony新…...

Vue3——父子组件通信
在Vue开发中,组件通信是核心概念之一。良好的组件通信机制能让我们的应用更加清晰、可维护。 父传子defineProps defineProps是一个编译时宏,仅在内部可用,不需要显式导入。声明的 props 会自动暴露给模板。 还返回一个对象,其中…...

游戏引擎学习第276天:调整身体动画
运行游戏,演示我们遇到的拉伸问题,看起来不太好,并考虑切换到更顶视角的视角 我们开始讨论游戏开发中的一些美学决策,特别是在处理动画方面。虽然我们是游戏程序员,通常不负责设计或艺术部分,但因为这是一…...

从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB
作者: Lucien-卢西恩 原文来源: https://tidb.net/blog/e7034d1b Java 应用开发技术发展历程 在业务开发早期,用 Java 借助 JDBC 进行数据库操作,虽能实现基本交互,但需手动管理连接、编写大量 SQL 及处理结果集&a…...

Mipsel固件Fuzzing小记
Mipsel固件Fuzzing小记 0x01 准备 1.1 安装必要工具链 首先需要安装 MIPS 交叉编译工具链和相关依赖: sudo apt-get install -y gcc-mipsel-linux-gnu g-mipsel-linux-gnu binwalk qemu-user-static afl这些工具分别用于:交叉编译、固件解包、二进制…...

本土DevOps革命:Gitee如何撬动中国企业的数字化转型新动能
在数字化浪潮席卷全球的背景下,中国企业正面临前所未有的转型压力与机遇。随着《数据安全法》和《个人信息保护法》的全面实施,以及信创产业政策的深入推进,研发工具链的自主可控已成为关乎企业核心竞争力的战略命题。在这一关键赛道上&#…...
关于此站点更改通知.top域名后期将统一更换为snowytime.cn访问,其余top访问进入过渡期
随着互联网技术的不断发展和域名应用的日益普及,为了更好地满足用户需求,提升网站访问体验,我们决定对现有的.top域名进行一次重大调整。自2025年6月1日起,.top域名后期将统一更换为snowytime.cn访问,其余top访问将暂时…...
使用python进行人员轨迹跟踪
一、系统概述 该系统基于计算机视觉技术,实现对视频或摄像头画面中的人员进行检测、跟踪,并生成轨迹数据。支持透视变换校准(鸟瞰图显示)、多目标跟踪、轨迹存储及视频录制功能,适用于安防监控、行为分析等场景。 二…...

强化学习入门:马尔科夫奖励过程二
文章目录 前言1、动作2、策略总结 前言 最近想开一个关于强化学习专栏,因为DeepSeek-R1很火,但本人对于LLM连门都没入。因此,只是记录一些类似的读书笔记,内容不深,大多数只是一些概念的东西,数学公式也不会…...

JVM 双亲委派机制
一、从 JDK 到 JVM:Java 运行环境的基石 在 Java 开发领域,JDK(Java Development Kit)是开发者的核心工具包。它不仅包含了编译 Java 代码的工具(如 javac),还内置了 JRE(Java Run…...

uniapp -- uCharts 仪表盘刻度显示 0.9999999 这样的值问题处理。
文章目录 🍉问题🍉解决方案🍉问题 在仪表盘上,23.8变成了 23.799999999999997 🍉解决方案 formatter格式化问题 1:在 config-ucharts.js 或 config-echarts.js 配置对应的 formatter 方法 formatter: {yAxisDemo1: function (...

BGP团体属性
团体属性: 1、用于限制BGP路由的传递范围 2、类似于IGP协议中的tag值,用于对BGP路由实现标记。 团体属性的分类: 1、公共团体属性: Internet:默认所有路由都有该属性,具有该属性BGP路由发送给所有的BGP邻居…...

Redis——三大策略
过期删除策略 Redis可以对key设置过期时间,因此需要有相应的机制将已过期的键值对删除 设置了过期时间的key会存放在过期字典中,可以用presist命令取消key过期时间 过期字典存储在redisDb结构中: typedef struct redisDb {dict *dict; …...