Linux指令详解之:进程与系统负载
5.4 进程(process)
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。简单的来说就是:一段程序的执行过程。我们将从守护进程、僵尸进程和孤儿进程叙述讲解。
5.4.1 守护进程
作用:
- 脱离终端:守护进程在运行时不与任何终端关联,因此它们不能接受来自终端的输入或向终端输出信息。这一特性使得守护进程能够在无人值守的服务器环境中持续运行
- 后台运行:守护进程在后台运行,不占用用户的交互会话,因此不会影响用户的其他操作
- 持久运行:守护进程通常在系统启动时启动,并一直运行直到系统关闭。它们提供不间断的服务,如文件系统监控、网络服务、打印机队列管理等
- 资源管理:守护进程需要妥善管理资源,包括文件描述符、内存分配等,以确保系统资源的高效利用和避免泄露
- 错误处理与日志记录:守护进程需要能够处理运行时可能出现的错误,并将相关信息记录到日志文件中,以便于问题的诊断且追踪
5.4.2 僵尸进程
概述:进程因为一些原因脱离系统控制,但是进程又没有正常的退出或是结束,进程运行中不受控制所以会成为僵尸进程。简单的来讲就是父进程创建子进程后,子进程的退出状态不被手机,爹不要它了,就会变成僵尸进程。
处理:一般命令kill,甚至
kill -9强制结束进程,一般都会失效。一般解决方法就是去结束僵尸进程的上级进程,主要分为:
- 如果僵尸进程的上级进程是守护进程,则只能重启Linux
- 如果僵尸进程的上级进程不是主进程(PID = 1),则通过kill命令结束即可
查看:
通过命令查看系统是否有僵尸进程,其中zombie就是系统存在僵尸进程的个数
top
Tasks: 151 total, 2 running, 148 sleeping, 1 stopped, 0 zombie
通过命令查看哪个进程是僵尸进程
ps awx | grep Z
ps awx | grep "defunct"
排查与结束僵尸进程全流程:
检查是否有僵尸进程
top
查看哪个进程是僵尸进程,并记录PID
pa aux | grep Z
查看僵尸进程的上级进程
pstree -p # 直接看即可
ps -ef #查看第3列
如果上级进程不是主进程
kill [PID]
检查僵尸进程数量
top
5.4.3 孤儿进程
概述:父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”此时的子进程就叫做孤儿进程-->爹么了;Linux避免系统存在过多的孤儿进程,init进程会收留孤儿进程,变成孤儿进程的父进程-->init养父接手;
检查:事前列号你要监控的服务,通过
pstree -p或ps -ef
解决方法:重启服务
6.0 进程监控指令
6.0.1 ps(报告当前系统的进程状态)
- ps -ef输出的内容较少
| ps -ef 结果 | 说明 |
|---|---|
| UID | 进程属于的用户 |
| PID | 进程ID(process id) |
| PPID | 父进程ID (parent id) |
| TIME | 进程占用CPU的时间 |
| CMD | 进程名字 |
- ps aux输出的内容较多
| ps -aux | 说明 |
|---|---|
| USER | 用户 |
| PID | 进程ID |
| %CPU | 进程的CPU使用率 |
| %MEM | 进程的内存使用率 |
| STAT | 进程的状态 |
| COMMAND | 进程名字 |
案例247. 对进程占用CPU或内存使用率进行排序
# CPU
ps aux | sort -rnk3
# MEM
ps aux | sort -rnk4
# ps内置排序指令
ps aux --sort=-%mem | head # +升序;-降序
pa aux --sort=-%mem --no-heading | head
案例252. 过滤出叫crond的进程或sshd的进程
[root@kylin-ren-class /]# ps -ef | egrep "crond|sshd"
root 835 1 0 08:42 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 1143 835 0 08:44 ? 00:00:00 sshd: root [priv]
root 1165 1143 0 08:44 ? 00:00:00 sshd: root@pts/0
root 3939 1 0 16:04 ? 00:00:00 /usr/sbin/crond -n
root 4713 835 0 18:01 ? 00:00:00 sshd: root [priv]
root 4723 4713 0 18:01 ? 00:00:00 sshd: root@pts/1
root 4899 835 0 18:01 ? 00:00:00 sshd: root [priv]
root 4909 4899 0 18:01 ? 00:00:00 sshd: root@notty
root 5494 4730 0 20:22 pts/1 00:00:00 grep -E --color=auto crond|sshd
案例253. 统计crond进程数量
# crond运行中
[root@kylin-ren-class /]# ps -ef | grep crond | wc -l
2
# crond关闭
[root@kylin-ren-class /]# systemctl stop crond
# crond关闭后,grep还有一个进程数所以为1
[root@kylin-ren-class /]# ps -ef | grep crond | wc -l
1
# 精准过滤crond进程数量
[root@kylin-ren-class /]# ps -ef | grep crond | grep -v 'grep' | wc -l
0
# 扩展进阶写法
[root@kylin-ren-class /]# ps -ef | grep '[c]rond' | wc -l
0
案例254. 输出rsyslog进程的PID
[root@kylin-ren-class /]# ps -ef | grep '[r]syslog' | awk '{print $2}'
893
6.0.2 ps aux 结果中的VSZ和RSS区别
1. VSZ和RSS进程占用的内存大小的单位都是KB
2. VSZ:虚拟内存 = 物理内存 + Swap
3. RSS:物理内存
# 物理内存通过 free -h 查看
swap交换分区作用:内存不足的时候临时充当内存
6.0.3 ps aux 结果进程状态(Z、R、S、D、T)
| 进程状态基础 | 说明 |
|---|---|
| Z | zombie僵尸进程(异常) |
| R | running进程运行中,占用CPU |
| S | sleeping 休眠,没有运行 |
| D | 不可中断进程,一般进行IO(读写磁盘) |
| T | 挂起的进程,后台运行且暂停状态 |
进程状态加BUFF
| BUFF组合 | 说明 |
|---|---|
| R+或S+或D+ | 进程前台运行 |
| Ss xxxxs | 进程是管理进程(父进程) |
| R< 或 S< | 高优先级进程 |
| RN或SN | 低优先级进程 |
| Sl | 进程是多线程(进程,线程) |
案例248. 给sshd设置为高优先级进程
6.1 后台运行服务
概述:前台运行 的命令,如果远程连接断开,电台的命令就结束了;如果让命令去后台运行,且后台运行的命令一般就不会因为链接断开而结束
方案 说明 应用场景 命令 & 最常用,当前链接结束后会推出 大部分时候 nohup 最常用,比较常用,命令输出保留到一个文件中nohup.out 稳定,记录输出 Ctrl + z 后台挂起(暂停),回到前台运行fg,后台运行bg 较少使用 screen 命令需要安装,screen命令创建虚拟机窗口,命令可以在里面运行 自己研究一下
案例249. 命令后台运行
ping baidu.com &
sleep 99 &
案例250. 使用nohup命令后台运行并把输出写入到文件
# 不指定文件默认写到nohup.out
nohup ping baidu.com &
# 指定写入某个文件
nohup ping baidu.com > /tmp/ping.log 2>&1 &
案例251. 在使用yum/apt安装软件卡住了,ctrl + c无法取消(前台)怎么办
# 1.进入后台挂起
yum reinstall tree
ctrl + z
# 2.job查看后台的进程
jobs
[root@kylin-ren-class /]# jobs
[1]+ 已停止 yum reinstall tree
# 3.通过kill结束
kill %1 #任务序号是1
6.2 top 命令讲解
概述:显示或管理执行中的程序
top命令的快捷键
快捷键 说明 q 退出(quit) space 立刻更新 p 默认,按照CPU使用率排序 M 按照进程的内存使用率排序 1 显示所有核心的CPU使用情况
top命令参数
参数 说明 -b 显示所有信息,不仅仅显示头部信息和部分的进程信息 -n[数字] 显示几次
案例255. top命令非交互模式与过滤指定内容
[root@kylin-ren-class ren]# top -bn1 | grep 'zombie' | awk '{print $(NF-1)}'
0
案例256. 取出系统登陆用户数量
[root@kylin-ren-class ren]# top -bn1 | awk 'NR==1 ' | awk '{print $(NF-6)}'
2
案例257. 取出僵尸进程数量
[root@kylin-ren-class ren]# top -bn1 | awk 'NR==2{print $(NF-1)}'
0
6.3 系统负载
概述:在单位时间内,系统进程处于可以运行状态(R、S状态)和处于不可中断状态(D磁盘读写)的进程数量
- 系统负载:最近1分钟,最近5分钟,最近15分钟的平均值,一般也叫平均负载
- 它在Linux中一般用于衡量系统繁忙程度
- 可运行CPU、不可中断IO
6.3.1 如何衡量系统负载值高低
- 系统负载的值与CPU核心总数比较(lscpu)
- 接近于CPU核心总数就表示系统负载有些高
- 一般进阶CPU核心总数的60%~70%我们就要警惕,这是阈值
4核心的负载警告范围:2.4~3.2
4核心CPU使用率最多可以达到单个进程400%
6.3.2 系统负载变高常见原因
- CPU:
- 磁盘IO:
6.3.3 系统负载变高排查流程
| 流程 | 细节 |
|---|---|
| 1. 通过监控软件发现故障 | 第3阶段讲解 |
| 2. 通过堡垒机连接故障机器,确定是否有故障 | w、top、lscpu |
| 3. A. 定位CPU导致还是IO导致 | top命令 |
| 3. B. top命令的%CPU部分,如果us或sy高,表明CPU占用导致的负载高 | top命令查看us和sy |
| 3. C. top命令的%CPU部分,如果wa变高,表示系统进程正在进行读写操作,可能其他进程正在排队导致IO变高 | top命令查看wa |
| 4. A. 定位到具体的进程 | 具体进程具体操作 |
| 4. B. 如果是CPU导致,top命令CPU排序,ps、aux过滤排序 | iotop命令 |
| 4. C. 如果是IO导致,则使用iotop -o | iotop命令 |
| 5. 找出问题进程,根据进程找出相应服务,查看服务 | 后续阶段查看2阶段内容 |
6.3.4 模拟系统负载(压力测试)
# 安装压力测试软件
1.yum install -y stress
# 2.模拟CPU导致的负载高
stress --cpu 2 --timeout 1000
# 3.模拟IO导致的系统负载高
stress --io 4 --hdd 4 --hdd-bytes 1g --timeout 10000s
Linux指令详解之:进程与系统负载的更多相关文章
- Linux指令详解useradd groupadd passwd chpasswd chage 密码修改
Linux指令详解useradd groupadd passwd chpasswd chage 密码修改 http://speediness.blog.51cto.com/760841/1783661 ...
- Linux 指令详解 alias 设置别名(转)
我们在使用Linux中使用较长的命令而且要经常要使用时,总是会使用别名,这里就简单的介绍一下别名alias 指令:alias设置指令的别名 语法:# alias name='command line ...
- 轻松学习Linux之详解系统引导过程
轻松学习Linux之详解系统引导过程-1 轻松学习Linux之详解系统引导过程-2 本文出自 "李晨光原创技术博客" 博客,谢绝转载!
- Linux权限详解 命令之 chmod:修改权限
权限简介 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功. Linux下文件的权限类型一般包括读,写,执行.对应字母为 r.w.x. Li ...
- (转)Linux PS 详解
原文:https://cn.aliyun.com/jiaocheng/162702.html 摘要:原文地址:http://www.cnblogs.com/wangkangluo1/archive/2 ...
- Linux Ptrace 详解
转 https://blog.csdn.net/u012417380/article/details/60470075 Linux Ptrace 详解 2017年03月05日 18:59:58 阅读数 ...
- GCC 指令详解及动态库、静态库的使用
GCC 指令详解及动态库.静态库的使用 一.GCC 1.1 GCC 介绍 GCC 是 Linux 下的编译工具集,是「GNU Compiler Collection」的缩写,包含 gcc.g++ 等编 ...
- Linux 系统结构详解
Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...
- linux syslog详解
linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.linux syslog配置 一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广 ...
- #pragma 预处理指令详解
源地址:http://blog.csdn.net/jx_kingwei/article/details/367312 #pragma 预处理指令详解 在所有的预处理指令中, ...
随机推荐
- Qt编写的项目作品29-RTSP播放器+视频监控(海康SDK版本)
一.功能特点 支持播放视频流和本地MP4文件. 支持句柄和回调两种模式. 多线程显示图像,不卡主界面. 自动重连网络摄像头. 可设置边框大小即偏移量和边框颜色. 可设置是否绘制OSD标签即标签文本或图 ...
- Qt编写安防视频监控系统28-摄像机点位
一.前言 摄像机点位的功能主要是在图片地图和在线离线地图上设置对应摄像机的位置,然后双击可以实时预览对应摄像机的视频,在图片地图上拖动摄像机图标到对应位置,系统会自动保存位置信息,在网页地图上的摄像机 ...
- vue3 封装axios
1添加一个新的 http.js文件 封装axios 引入axios //引入Axios import axios from 'axios' 定义一个根地址 //视你自己的接口地址而定 var root ...
- Redis 源码简洁剖析 08 - epoll
select, poll, epoll 源码分析 参考链接 Redis 源码简洁剖析系列 select, poll, epoll 关于 select, poll, epoll,网络 IO 演变发展过 ...
- 基于源码分析 SHOW GLOBAL STATUS 的实现原理
问题 在 MySQL 中,查询全局状态变量的方式一般有两种:SHOW GLOBAL STATUS和performance_schema.global_status. 但不知道大家注意到没有,perfo ...
- Solution -「PKUWC 2018」「洛谷 P5298」Minimax
\(\mathscr{Description}\) Link. 给定一棵二叉树,每片叶子有一个权值,所有权值互不相同.每个非叶结点 \(u\) 有一个概率 \(p_u\in(0,1)\),表示 ...
- CDS标准视图:维护策略描述 I_MaintStrategyTextData
视图名称:维护策略描述 I_MaintStrategyTextData 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Maintenance Strategy ...
- nginx平台初探-2
handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-ba ...
- G1原理—8.如何优化G1中的YGC
大纲 1.5千QPS的数据报表系统发生性能抖动的优化(停顿时间太小导致新生代上不去) 2.由于产生大量大对象导致系统吞吐量降低的优化(大对象太多频繁Mixed GC) 3.YGC其他相关参数优化之TL ...
- 系统提示msvcp120.dll丢失如何解决
最近有位win7系统用户反映,自己安装完游戏开始玩的时候,系统却提示:示msvcp120.dll丢失,这导致了游戏无法正常运行,这让用户很是苦恼,不知道电脑如何解决,为此非常苦恼,那么win7系统提示 ...