作为一名博客作者,我收藏了很多博客、网站和论坛用来寻找 Linux 和 Unix 相关的内容。有时候,我在浏览器中开启了非常多的标签页,导致操作系统会无响应好几分钟。我不能移动我的鼠标,也不能杀掉一个进程或关闭任何开启的标签页。在这种情况下,我别无选择,只能强制重启系统。当然我也用了 OneTab (LCTT 译注:OneTab 是一个 Chrome 的 Extension,可以将标签页转化成一个列表保存。)和 Greate Suspender (LCTT 译注:Great Suspender 是一个 Chrome 的 Extension, 可以自动冻结标签页)这样浏览器拓展,但它们在这里也起不到太大的作用。 我经常耗尽我的内存。而这就是 Early OOM 起作用的时候了。在情况严重时,它会杀掉一个未响应系统中的内存消耗最大的进程。Early OOM 每秒会检测可用内存和空余交换区 10 次,一旦两者都低于 10%,它就会把最大的进程杀死。

为什么用 Early OOM?为什么不用系统内置的 OOM killer?

在继续讨论下去之前,我想先简短的介绍下 OOM killer,也就是 Out Of Memory killer。OOM killer 是一个由内核在可用内存非常低的时候使用的进程。它的主要任务是不断的杀死进程,直到释放出足够的内存,使内核正在运行的其它进程能顺利运行。OOM killer 会找到系统中最不重要并且能释放出最多内存的进程,然后杀掉他们。在 /proc 目录下的 pid 目录中,我们可以看到每个进程的 oom_score。

示例:

$cat/proc/10299/oom_score

1

一个进程的 oom_score 的值越高,这个进程越有可能在系统内存耗尽的时候被 OOM killer 杀死。

Early OOM 的开发者表示,相对于内置的 OOM killer,Early OOM 有一个很大的优点。就像我之前说的那样,OOM killer 会杀掉 oom_score 最高的进程,而这也导致 Chrome 浏览器总是会成为第一个被杀死的进程。为了避免这种情况发生,Early OOM 使用 /proc/*/status 而不是 echo f > /proc/sysrq-trigger(LCTT 译注:这条命令会调用 OOM killer 杀死进程)。开发者还表示,手动触发 OOM killer 在最新版本的 Linux 内核中很可能不会起作用。

安装 Early OOM

Early OOM 在 AUR(Arch User Repository)中可以找到,所以你可以在 Arch 和它的衍生版本中使用任何 AUR 工具安装它。

pacaur-S earlyoom

packer-S earlyoom

yaourt-S earlyoom

启用并启动 Early OOM 守护进程:

sudosystemctlenable earlyoom

sudosystemctlstart earlyoom

在其它的 Linux 发行版中,可以按如下方法编译安装它:

gitclonehttps://github.com/rfjakob/earlyoom.git

cdearlyoom

make

sudomakeinstall

Early OOM - 杀掉无响应 Linux 系统中的最大的进程

运行如下命令启动 Early OOM:

earlyoom

如果是通过编译源代码安装的, 运行如下命令启动 Early OOM:

./earlyoom

示例输出:

earlyoom0.12

mem total:3863MiB,min:386MiB(10%)

swap total:2047MiB,min:204MiB(10%)

mem avail:1770MiB(45%),swap free:2047MiB(99%)

mem avail:1773MiB(45%),swap free:2047MiB(99%)

mem avail:1772MiB(45%),swap free:2047MiB(99%)

mem avail:1773MiB(45%),swap free:2047MiB(99%)

mem avail:1772MiB(45%),swap free:2047MiB(99%)

mem avail:1773MiB(45%),swap free:2047MiB(99%)

mem avail:1771MiB(45%),swap free:2047MiB(99%)

mem avail:1773MiB(45%),swap free:2047MiB(99%)

mem avail:1784MiB(46%),swap free:2047MiB(99%)

[...]

就像你在上面的输出中可以看到的,Early OOM 将会显示你有多少内存和交换区,以及有多少可用的内存和交换区。记住它会一直保持运行,直到你按下 CTRL+C。

如果可用的内存和交换区大小都低于 10%,Early OOM 将会自动杀死最大的进程,直到系统有足够的内存可以流畅的运行。你也可以根据你的需求配置最小百分比值。

设置最小的可用内存百分比,运行:

earlyoom-m

设置最小可用交换区百分比, 运行:

earlyoom-s

在帮助部分,可以看到更多详细信息:

$ earlyoom-h

earlyoom0.12

Usage:earlyoom[OPTION]...

-m PERCENTsetavailable memory minimum to PERCENT of total(default10%)

-s PERCENTsetfree swap minimum to PERCENT of total(default10%)

-M SIZEsetavailable memory minimum to SIZEKiB

-S SIZEsetfree swap minimum to SIZEKiB

-kusekernel oom killer instead of own user-space implementation

-i user-space oom killer should ignore positive oom_score_adj values

-d enable debugging messages

-vprintversion informationandexit

-r INTERVAL memory report intervalinseconds(default1),setto0to

disable completely

-psetniceness of earlyoom to-20andoom_score_adj to-1000

-hthishelp text

现在,你再也不用担心内存消耗最高的进程了。希望这能给你帮助。更多的好内容将会到来,敬请期待。

linux如何杀死进程最快,如何在Linux系统中杀掉内存消耗最大的进程?相关推荐

  1. c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程

    很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程. -- Magesh Maruthamuthu(作者) 很多次,你可能遇见过系统 ...

  2. 如何在 Linux 中找出内存消耗最大的进程

    很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程.我相信,你可能已经运行了下文中的命令以进行检查.如果没有,那你尝试过哪些其他的命 ...

  3. linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...

    Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...

  4. window如何使用Linux命令,如何在windows系统中使用linux的命令

    在windows上可以运行或使用linux下面的命令吗?可以,学习啦学习啦小编今天就来分享怎么样让Windows支持Linux命令,做这些安装和设置后,就可以非常方便的在windows系统中使用lin ...

  5. 查看linux电脑总内存,如何查看Linux系统中的内存使用情况的命令呢?

    有些命令可用于检查Linux系统中的内存使用情况.这是一些更好的命令. 有很多工具可以查看Linux系统中的内存使用情况.一些命令被广泛使用,例如free和ps.其他命令允许以多种方式显示系统的性能统 ...

  6. PPA 完全指南,如何在 Ubuntu 系统中使用 PPA

    如果你在使用 Ubuntu 系统,或其它衍生版本,如 Linux Mint.Linux Lite 或者 Zorin OS 等,可能会遇到添加使用 PPA 的情况.那什么是 PPA?为什么要使用 PPA ...

  7. 怎么查看Linux系统中的内存?

    我们在做Linux系统优化的时候,物理内存是非常重要的,Linux也有提供很多方法来监控内存资源的使用情况,那么你知道怎么查看Linux系统中的内存吗? Linux中使用free可以查看系统内存使用状 ...

  8. windows系统中如何使用命令来结束进程

    怎么样使用powershell工具用命令来结束进程? 今天就来给大家分享这个命令的使用方法一般我们都是在任务管理器中结束进程,不能使用命令来结束进程; win7以后的系统提供了一个新的工具powers ...

  9. widnows监控linux 内存,Linux_带你全面了解Linux系统内存监控,在Windows系统中查看内存的使用 - phpStudy...

    带你全面了解Linux系统内存监控 在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在Linux系统如何查看内存使用情况呢?下面和大家分享在Linux系统下查看内存使用情 ...

最新文章

  1. 一个简单的slider滑块组件
  2. NTU 课程笔记:MAS 714(16) 图灵机
  3. C++基本输入/输出
  4. 2018年第九届蓝桥杯C/C++ C组国赛 —— 第四题:约瑟夫环
  5. iOS开发tableview二级联动的细节实现中注意的细节总结
  6. 十二:内存简单介绍和OC的内存管理
  7. DOCX是什么格式文件
  8. 关于RDLC使用导出PDF文件时,中文乱码解决方案
  9. python单词字典排序_python字典排序
  10. ios 系统提示框_二个消息:关于iOS12.2和iOS13 beta 1系统功能
  11. 球球大作战c语言源代码,球球大作战,源码分享
  12. learn go return fuction
  13. 一个案例,入门Java动态代理技术
  14. CAJ论文格式转PDF(附带书签)
  15. 确立Sprint 目标 (Sprint Goal) 的8个理由
  16. 产品读书《魔鬼经济学3:用反常思维解决问题》
  17. JEESZ分布式框架简介---技术介绍文档
  18. [prometheus]Step11-prometheus动态监控服务器端口并告警
  19. c语言编程存款问题,c程序问题输入存款金额money存期yea...
  20. 中国医药电子商务平台行业十四五盈利规模与运营前景分析报告2022年

热门文章

  1. 玩转 SpringBoot2.x 之自定义配置类整合Druid(Mybatis版)
  2. ImageIO 合并图片工具
  3. win8安装mysql出现2503_win8.1安装msi文件出现2503错误的解决方法
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的个人理财系统
  5. php httprequest 安装,php实现httpRequest的方法
  6. 时间 ,空间 ,物质
  7. Parcel极速零配置Web应用打包工具
  8. 牛客网 牛客小白月赛1 C.分元宵-快速幂
  9. 数组中的对象的特征值提取生成新对象实现方法
  10. Ubuntu8.04系列二-系统优化篇