Linux 进程管理

介绍一些 Linux 所提供的工具来进行进程的查看与控制,掌握这些工具让我们能在某些进程出现异常的时候及时查看相关的指标,从而解决问题。

一、进程查看

  • top:实时的查看进程的状态
  • ps:静态查看当前的进程信息
  • pstree:查看当前活跃进程的属性结构

1.1 top工具的使用

top工具是常用的一个查看工具,能实时的查看系统的一些关键信息:

top

top是一个在前台执行的程序,所以执行后变进入到这样的一个交互界面,正因交互界面我们才可以实时的获取到系统于进程的信息,在交互界面我们eyi通过一些指令来操作和筛选,在此之前想了解显示的内容:

看到top显示的第一排:

内容解释
top表示当前的程序名称
09:12:35表示当前的系统时间
up 16 days, 1:09表示当前机器已经启动了多长时间
1 user表示当前系统中只有一个用户
load average: 0.86,0.14,0.19分别对应1,5,15分钟内cpu的评价负载

load average 在 wikipedia 中的解释是 the system load is a measure of the amount of work that a computer system is doing 也就是对当前 CPU 工作量的度量,具体来说也就是指运行队列的平均长度,也就是等待 CPU 的平均进程数相关的一个计算值。

我们该如何看待这个load average 数据呢?

假设我们的系统是单 CPU、单内核的,把它比喻成是一条单向的桥,把CPU任务比作汽车。

  • load = 0 的时候意味着这个桥上并没有车,cpu 没有任何任务;
  • load < 1 的时候意味着桥上的车并不多,一切都还是很流畅的,cpu 的任务并不多,资源还很充足;
  • load = 1 的时候就意味着桥已经被车给沾满了,没有一点空隙,cpu 的已经在全力工作了,所有的资源都被用完了,当然还好,这还在能力范围之内,只是有点慢而已;
  • load > 1 的时候就意味着不仅仅是桥上已经被车占满了,就连桥外都被占满了,cpu 已经在全力的工作了,系统资源的用完了,但是还是有大量的进程在请求,在等待。若是这个值大于2,大于3,超过 CPU 工作能力的 2,3。而若是这个值 > 5 说明系统已经在超负荷运作了

这是单个 CPU 单核的情况,而实际生活中我们需要将得到的这个值除以我们的核数来看。我们可以通过一下的命令来查看 CPU 的个数与核心数

#查看物理cpu的个数
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
#每个cpu的核心数
cat /proc/cpuinfo | grep "physical id" | grep "0" | wc -l

通过上面的指数我们可以得知 load 的临界值为 1 ,但是在实际生活中,比较有经验的运维或者系统管理员会将临界值定为0.7。这里的指数都是除以核心数以后的值,不要混淆了

  • 若是 load < 0.7 并不会去关注他;
  • 若是 0.7< load < 1 的时候我们就需要稍微关注一下了,虽然还可以应付但是这个值已经离临界不远了;
  • 若是 load = 1 的时候我们就需要警惕了,因为这个时候已经没有更多的资源的了,已经在全力以赴了;
  • 若是 load > 5 的时候系统已经快不行了,这个时候你需要加班解决问题了

通常我们都会先看 15 分钟的值来看这个大体的趋势,然后再看 5 分钟的值对比来看是否有下降的趋势。

top 的第二行数据,基本上第二行是进程的一个情况统计

内容解释
Tasks: 28 total进程总数
1 running1个正在运行的进程数
26 sleeping25个睡眠的进程数
1 stopped没有停止的进程数
0 zombie没有僵尸进程数

top 的第三行数据,这一行基本上是 CPU 的一个使用情况的统计

| 内容 | 解释 |
| Cpu(s): 0.6us | 用户空间进程占用CPU百分比(0.6%)|
| 0.2 sy | 内核空间运行占用CPU百分比(0.2%) |
| 0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比(0.0%) |
| 98.6 id | 空闲CPU百分比 |
| 0.6 wa | 等待输入输出的CPU时间百分比 |
| 0.0 hi | 硬中断(Hardware IRQ)占用CPU的百分比 |
| 0.0 si | 软中断(Software IRQ)占用CPU的百分比 |
| 0.0 st | (Steal time) 是 hypervisor 等虚拟服务中,虚拟 CPU 等待实际 CPU 的时间的百分比 |

CPU 利用率是对一个时间段内 CPU 使用状况的统计,通过这个指标可以看出在某一个时间段内 CPU 被占用的情况,而 Load Average 是 CPU 的 Load,它所包含的信息不是 CPU 的使用率状况,而是在一段时间内 CPU 正在处理以及等待 CPU 处理的进程数情况统计信息,这两个指标并不一样。

top的第四行数据,这一行基本是内存的一个使用情况的统计

内容解释
8175596 total物理内存总量
1677840 free空间的物理内存总量
1806640 used使用的物理内存总量
4691116 buff/cache用作内存缓存的内存量

注意:系统中可用的物理内存最大值并不是 free 这个单一的值,而是 free + buffers + swap 中的 cached 的和

top 的第五行数据,这一行基本上是交换区的一个使用情况的统计

内容解释
0 total交换区总量
0 free空闲的交换区总量
0 used使用的交换区总量
60208884 avail Mem可用交换区总量

再下面就是进程的一个情况:

列名解释
PID进程id
USER该进程的所属用户
PR该进程执行的优先级 priority 值
NI该进程的 nice 值
VIRT该进程任务所使用的虚拟内存的总数
RES该进程所使用的物理内存数,也称之为驻留内存数
SHR该进程共享内存的大小
S该进程进程的状态: S=sleep R=running Z=zombie
%CPU该进程CPU的利用率
%MEM该进程内存的利用率
TIME+该进程活跃的总时间
COMMAND该进程运行的名字

注意

NICE 值叫做静态优先级,是用户空间的一个优先级值,其取值范围是-20至19。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。nice值中的 -20 到 19,中 -20 优先级最高, 0 是默认的值,而 19 优先级最低

PR 值表示 Priority 值叫动态优先级,是进程在内核中实际的优先级值,进程优先级的取值范围是通过一个宏定义的,这个宏的名称是 MAX_PRIO,它的值为 140。Linux 实际上实现了 140 个优先级范围,取值范围是从 0-139,这个值越小,优先级越高。而这其中的 0 - 99 是实时进程的值,而 100 - 139 是给用户的。

其中 PR 中的 100 to 139 值部分有这么一个对应 PR = 20 + (-20 to +19),这里的 -20 to +19 便是nice值,所以说两个虽然都是优先级,而且有千丝万缕的关系,但是他们的值,他们的作用范围并不相同

* VIRT *任务所使用的虚拟内存的总数,其中包含所有的代码,数据,共享库和被换出 swap空间的页面等所占据空间的总数

top是一个前台程序,所以是一个可以交互的:

常用交互命令解释
q退出程序
I切换显示平均负载和启动时间的信息
P根据CPU使用百分比大小进行排序
M根据驻留内存大小进行排序
i忽略闲置和僵死的进程,这是一个开关式命令
k终止一个进程,系统提示输入 PID 及发送的信号值。一般终止进程用 15 信号,不能正常结束则使用 9 信号。安全模式下该命令被屏蔽。

1.2 ps工具的使用

ps也是常用查看进程的工具之一,罗列出所有信息如下:

ps aux

还可以在查看时,将连同部分的进程呈树状显示出来
ps axjf

内容解释
F进程的标志(process flags),当 flags 值为 1 则表示此子程序只是 fork 但没有执行 exec,为 4 表示此程序使用超级管理员root权限
USER进程的拥有用户
PID进程的 ID
PPID其父进程的 PID
SIDsession 的 ID
TPGID前台进程组的 ID
%CPU进程占用的 CPU 百分比
%MEM占用内存的百分比
NI进程的 NICE 值
VSZ进程使用虚拟内存大小
RSS驻留内存中页的大小
TTY终端 ID
S or STAT进程状态
WCHAN正在等待的进程资源
START启动进程的时间
TIME进程消耗CPU的时间
COMMAND命令的名称和参数

TPGID栏写着-1的都是没有控制终端的进程,也就是守护进程

STAT表示进程的状态,而进程的状态有很多,如下表所示

状态解释
RRunning.运行中
SInterruptible Sleep.等待调用
DUninterruptible Sleep.不可中断睡眠
TStoped.暂停或者跟踪状态
XDead.即将被撤销
ZZombie.僵尸进程
WPaging.内存交换
N优先级低的进程
<优先级高的进程
s进程的领导者
L锁定状态
l多线程状态
+前台进程

使用 -l 参数可以显示自己这次登陆的 bash 相关的进程信息罗列出来

ps -l

若是查找其中的某个进程的话,我们还可以配合着 grep 和正则表达式一起使用

ps aux | grep zsh

当然如果觉得使用这样的此时没有把你想要的信息放在一起,我们也可以是用这样的命令,来自定义我们所需要的参数显示

ps -afxo user,ppid,pid,pgid,command

1.3 pstree工具的使用

通过 pstree 可以很直接的看到相同的进程数量,最主要的还是我们可以看到所有进程之间的相关性。

pstree

pstree -up#参数选择:
#-A  :各程序树之间以 ASCII 字元來連接;
#-p  :同时列出每个 process 的 PID;
#-u  :同时列出每个 process 的所屬账户名称。

二、 进程管理

2.1 kill命令

当一个进程结束的时候或者要异常结束的时候,会向其父进程返回一个或者接收一个 SIGHUP 信号而做出的结束进程或者其他的操作,这个 SIGHUP 信号不仅可以由系统发送,我们可以使用 kill 来发送这个信号来操作进程的结束或者重启等等。

前面使用 kill 命令来管理一些 job,这里将尝试用 kill 来操作下一些不属于 job 范畴的进程

#使用9这个信号强制结束 gedit 进程
kill -9 1608

2.2 进程的控制顺序

在使用 ps 命令的时候可以看到大部分的进程都是处于休眠的状态,如果这些进程都被唤醒,那么该谁最先享受 CPU 的服务,后面的进程又该是一个什么样的顺序呢?进程调度的队列又该如何去排列呢?

当然就是靠该进程的优先级值来判定进程调度的优先级,而优先级的值就是上文所提到的 PR 与 nice 来控制与体现了

而 nice 的值我们是可以通过 nice 命令来修改的,而需要注意的是 nice 值可以调整的范围是 -20 ~ 19,其中 root 有着至高无上的权力,既可以调整自己的进程也可以调整其他用户的程序,并且是所有的值都可以用,而普通用户只可以调制属于自己的进程,并且其使用的范围只能是 0 ~ 19,因为系统为了避免一般用户抢占系统资源而设置的一个限制

#打开一个程序放在后台,或者用图形界面打开
nice -n -5 vim &#用 ps 查看其优先级
ps -afxo user,ppid,pid,stat,pri,ni,time,command | grep vim

还可以用 renice 来修改已经存在的进程的优先级,同样因为权限的原因在实验环境中无法尝试

renice -5 pid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351208.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python实现的进程管理神器——Supervisor

文章目录 常用命令简介安装创建配置文件开机自启初试Web 界面配置文件子进程配置模板可用变量supervisorctl 命令Supervisor 组件卸载遇到的坑参考文献 常用命令 修改配置并重启子进程 vim /etc/supervisor/conf.d/xxx.conf supervisorctl reread supervisorctl update super…

Supervisor后台进程管理工具

Supervisor后台进程管理工具安装配置 一、安装及配置 1、Python liunx自带有了不需要安装&#xff08;没有的话需要安装&#xff09; 2、easy_install是setuptools包里带的一个命令 wget--no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 3、安…

Linux运维工具Supervisor(进程管理工具)

文章目录 一、介绍二、自带Web管理程序三、安装1、安装2、源码安装3、yum安装 四、配置文件五、启动六、设置开机启动七、查看 supervisord 是否在运行八、supervisorctl管理命令九、配置文件说明十、ini配置文件 举例说明十一、开启web页面管理程序十二、解决“unix:///tmp/su…

【Supervisor】Python 进程管理工具

Supervisor的安装配置与使用 一、简介 【1】Supervisor是Python开发的进程管理工具&#xff08;Client/Server系统&#xff09;&#xff0c;可以管理和监控Unix&#xff0c;Linux&#xff0c;Mac OS X 系统上的进程&#xff0c;无法运行在Windows上 【2】Supervisor官方版目前只…

Python supervisor 强大的进程管理工具

一、问题背景 1、背景 如何才能让一个进程摆脱终端&#xff0c;获得相对较长的生命周期&#xff1f; 2、后台(守护)、前台进程 什么是守护进程&#xff1f;通俗点讲就是后台跑着的进程&#xff0c;不会因为你关了终端服务就会随之停止&#xff0c;直到你把计算机的电源关闭…

进程管理工具supervisor的使用、常见报错问题处理

进程管理工具supervisor的使用、常见报错问题处理 1 安装2 简介2.1 supservisor自身提供三个命令&#xff1a;2.1.1 supervisorctl2.1.2 supervisord2.1.3 echo_supervisord_conf 2.2 配置文件2.3 重要事项2.4 查看supervisor的log日志 3 配置3.1 修改配置文件3.2 加载配置文件…

进程管理工具——Supervisord简介及安装

一、简介 Supervisor 是一个用 Python 写的进程管理工具&#xff0c;可以很方便的用来在 UNIX-like 系统&#xff08;不支持 Windows&#xff09;下启动、重启&#xff08;自动重启程序&#xff09;、关闭进程&#xff08;不仅仅是 Python 进程&#xff09; Supervisor 是一个 …

Supervisor进程管理详解

文章目录 1. supervisor简介2. supervisor安装2.1 安装方式2.2 验证 3. supervisor配置文件3.1 主配置文件3.2 子配置文件(program 配置)3.2.1 详细配置3.2.2 公司配置 4. 进程管理命令5. web管理&#xff08;不常用&#xff09;6. Supervisor配置systemctl服务7. Supervisor管…

Linux 中进程管理工具汇总

如果我们的Linux系统整个系统资源快要被耗尽时&#xff0c;我们是否能够找出那个最消耗系统资源的进程&#xff0c;然后删除该进程&#xff0c;让系统恢复正常呢&#xff0c;或者由于某个程序存在BUG&#xff0c;导致产生一系列的问题&#xff0c;有如何查找它并结束进程&#…

Supervisor安装与配置(Linux/Unix进程管理工具)

原文链接&#xff1a;http://blog.csdn.net/xyang81/article/details/51555473 Supervisor&#xff08;http://supervisord.org/&#xff09;是用Python开发的一个client/server服务&#xff0c;是Linux/Unix系统下的一个进程管理工具&#xff0c;不支持Windows系统。它可以很…

linux进程管理工具:supervisor

各种各样的程序运行情况中&#xff0c;或多或少都会有一些服务是用脚本跑起来的&#xff0c;我们通常的做法一般都是让其在后台运行&#xff0c;例如使用nohup&#xff0c;&等命令。 而这样的方法并不十分可靠&#xff0c;所以在这里推荐一个非常好用的进程管理工具&#x…

进程管理工具Supervisor

简介 Supervisor是一个客户端/服务器系统&#xff0c;允许用户在类UNIX操作系统上控制许多进程。它是基于python语言开发一个进程管理工具。 Supervisor的服务器端称为supervisord&#xff0c;主要负责在启动自身时启动管理的子进程&#xff0c;响应客户端的命令&#xff0c;重…

Supervisor 进程管理

一、简介 supervisor 是一个Python开发的、通用的进程管理程序。当程序中断时&#xff0c;supervisor能自动重启它&#xff0c;不再需要程序员或系统管理员自己编写代码来控制。 supervisor要求管理程序是非daemon程序&#xff0c;supervisor会把程序转成daemon程序&#xff0…

电脑技巧:进程管理工具Process Explorer介绍

目录 1、介绍 2、常用功能介绍 2.1 替代微软自带的任务管理器 2.2 查看当前系统中运行的进程 2.3 查看进程的详细信息 2.4 检索进程 2.5 监控操作系统的性能指标 2.6 获取Dump文件 2.7 进程操作功能 今天给大家推荐一款非常强大的进程管理工具Process Explorer&#xff0c;感兴…

进程管理工具

目录 一、进程管理工具(Supervisor) 简介 二、Supervisor安装与配置 介绍Supervisor 一、进程管理工具(Supervisor) 简介 Supervisor是用Python开发的一个client/server服务&#xff0c;是Linux/Unix系统下的一个进程管理工具&#xff0c;不支持Windows系统。它可以很方便的…

QLoRA:量化 LLM 的高效微调

此 repo 支持论文“QLoRA&#xff1a;量化 LLM 的高效微调”&#xff0c;旨在使对 LLM 研究的访问民主化。 QLoRA 使用bitsandbytes进行量化&#xff0c;并与 Hugging Face 的PEFT和transformers库集成。QLoRA 由华盛顿大学 UW NLP 小组的成员开发。 概述 我们介绍了 QLoRA&…

访问学者申请中4个难点解析

近年来&#xff0c;越来越多的学者希望通过申请成为访问学者来扩展他们的研究领域和学术交流。然而&#xff0c;访问学者申请过程中存在一些难点&#xff0c;下面知识人网来解析其中的4个难点。 首先&#xff0c;第一个难点是选择适合的研究机构。访问学者需要仔细考虑自己的研…

Fiddler抓包工具之高级工具栏中的Inspectors的使用

高级工具栏中的Inspectors的使用 Inspectors 页签允许你用多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片&#xff0c;HTML/JS/CSS 使用 TextView 可以看到响应的内容。Raw标签可以查看原始的符合http标准的请求和响应头。Cookies标签可以看到…

人才“选用育留”难?做好这步,人力资源或许比你想象的更轻松

人才作为企业生存和发展最重要的资源之一&#xff0c;如何发现、使用、培养、留住优秀人才是所有企业人力资源管理的关键。但在实际场景当中&#xff0c;“招聘流程长造成人才流失”、“员工招聘不精准、效率低”、“员工培育周期长、成本高”、“优秀人才留不住”等问题正深深…

win10系统怎么安装显卡驱动,驱动人生详细教程

驱动人生的用户跟小编咨询说&#xff0c;windows10系统要怎么安装显卡驱动?或者win10怎样安装网卡驱动、声卡驱动等等驱动程序 其实是很简单的&#xff0c;下面小编在这里给大家介绍一下用驱动人生安装显卡驱动的具体步骤 1、打开**驱动人生**选择设备管理器&#xff0c;然后…