自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在無(wú)響應(yīng)的Linux系統(tǒng)中殺掉內(nèi)存消耗最大的進(jìn)程?

系統(tǒng) Linux
有時(shí)候,我在瀏覽器中開(kāi)啟了非常多的標(biāo)簽頁(yè),導(dǎo)致操作系統(tǒng)會(huì)無(wú)響應(yīng)好幾分鐘。我不能移動(dòng)我的鼠標(biāo),也不能殺掉一個(gè)進(jìn)程或關(guān)閉任何開(kāi)啟的標(biāo)簽頁(yè)。在這種情況下,我別無(wú)選擇,只能強(qiáng)制重啟系統(tǒng)。而這就是 Early OOM 起作用的時(shí)候了。在情況嚴(yán)重時(shí),它會(huì)殺掉一個(gè)未響應(yīng)系統(tǒng)中的內(nèi)存消耗最大的進(jìn)程。

https://s4.51cto.com/oss/201805/31/2db7db4f04924c480d0a8005ce4b3729.png

作為一名博客作者,我收藏了很多博客、網(wǎng)站和論壇用來(lái)尋找 Linux 和 Unix 相關(guān)的內(nèi)容。有時(shí)候,我在瀏覽器中開(kāi)啟了非常多的標(biāo)簽頁(yè),導(dǎo)致操作系統(tǒng)會(huì)無(wú)響應(yīng)好幾分鐘。我不能移動(dòng)我的鼠標(biāo),也不能殺掉一個(gè)進(jìn)程或關(guān)閉任何開(kāi)啟的標(biāo)簽頁(yè)。在這種情況下,我別無(wú)選擇,只能強(qiáng)制重啟系統(tǒng)。當(dāng)然我也用了 OneTab (LCTT 譯注:OneTab 是一個(gè) Chrome 的 Extension,可以將標(biāo)簽頁(yè)轉(zhuǎn)化成一個(gè)列表保存。)和 Greate Suspender (LCTT 譯注:Great Suspender 是一個(gè) Chrome 的 Extension, 可以自動(dòng)凍結(jié)標(biāo)簽頁(yè))這樣瀏覽器拓展,但它們?cè)谶@里也起不到太大的作用。 我經(jīng)常耗盡我的內(nèi)存。而這就是 Early OOM 起作用的時(shí)候了。在情況嚴(yán)重時(shí),它會(huì)殺掉一個(gè)未響應(yīng)系統(tǒng)中的內(nèi)存消耗***的進(jìn)程。Early OOM 每秒會(huì)檢測(cè)可用內(nèi)存和空余交換區(qū) 10 次,一旦兩者都低于 10%,它就會(huì)把***的進(jìn)程殺死。

為什么用 Early OOM?為什么不用系統(tǒng)內(nèi)置的 OOM killer?

在繼續(xù)討論下去之前,我想先簡(jiǎn)短的介紹下 OOM killer,也就是 Out Of Memory killer。OOM killer 是一個(gè)由內(nèi)核在可用內(nèi)存非常低的時(shí)候使用的進(jìn)程。它的主要任務(wù)是不斷的殺死進(jìn)程,直到釋放出足夠的內(nèi)存,使內(nèi)核正在運(yùn)行的其它進(jìn)程能順利運(yùn)行。OOM killer 會(huì)找到系統(tǒng)中最不重要并且能釋放出最多內(nèi)存的進(jìn)程,然后殺掉他們。在 /proc 目錄下的 pid 目錄中,我們可以看到每個(gè)進(jìn)程的 oom_score。

示例:

  1. $ cat /proc/10299/oom_score
  2. 1

一個(gè)進(jìn)程的 oom_score 的值越高,這個(gè)進(jìn)程越有可能在系統(tǒng)內(nèi)存耗盡的時(shí)候被 OOM killer 殺死。

Early OOM 的開(kāi)發(fā)者表示,相對(duì)于內(nèi)置的 OOM killer,Early OOM 有一個(gè)很大的優(yōu)點(diǎn)。就像我之前說(shuō)的那樣,OOM killer 會(huì)殺掉 oom_score ***的進(jìn)程,而這也導(dǎo)致 Chrome 瀏覽器總是會(huì)成為***個(gè)被殺死的進(jìn)程。為了避免這種情況發(fā)生,Early OOM 使用 /proc/*/status 而不是 echo f > /proc/sysrq-trigger(LCTT 譯注:這條命令會(huì)調(diào)用 OOM killer 殺死進(jìn)程)。開(kāi)發(fā)者還表示,手動(dòng)觸發(fā) OOM killer 在***版本的 Linux 內(nèi)核中很可能不會(huì)起作用。

 

安裝 Early OOM

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

使用 Pacaur

  1. pacaur -S earlyoom

使用 Packer

  1. packer -S earlyoom

使用 Yaourt

  1. yaourt -S earlyoom

啟用并啟動(dòng) Early OOM 守護(hù)進(jìn)程:

  1. sudo systemctl enable earlyoom
  2. sudo systemctl start earlyoom

在其它的 Linux 發(fā)行版中,可以按如下方法編譯安裝它:

  1. git clone https://github.com/rfjakob/earlyoom.git
  2. cd earlyoom
  3. make
  4. sudo make install

 

Early OOM - 殺掉無(wú)響應(yīng) Linux 系統(tǒng)中的***的進(jìn)程

運(yùn)行如下命令啟動(dòng) Early OOM:

  1. earlyoom

如果是通過(guò)編譯源代碼安裝的, 運(yùn)行如下命令啟動(dòng) Early OOM:

  1. ./earlyoom

示例輸出:

  1. earlyoom 0.12
  2. mem total: 3863 MiB, min: 386 MiB (10 %)
  3. swap total: 2047 MiB, min: 204 MiB (10 %)
  4. mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %)
  5. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  6. mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
  7. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  8. mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
  9. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  10. mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %)
  11. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  12. mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %)
  13. [...]

就像你在上面的輸出中可以看到的,Early OOM 將會(huì)顯示你有多少內(nèi)存和交換區(qū),以及有多少可用的內(nèi)存和交換區(qū)。記住它會(huì)一直保持運(yùn)行,直到你按下 CTRL+C

如果可用的內(nèi)存和交換區(qū)大小都低于 10%,Early OOM 將會(huì)自動(dòng)殺死***的進(jìn)程,直到系統(tǒng)有足夠的內(nèi)存可以流暢的運(yùn)行。你也可以根據(jù)你的需求配置最小百分比值。

設(shè)置最小的可用內(nèi)存百分比,運(yùn)行:

  1. earlyoom -m <PERCENT_HERE>

設(shè)置最小可用交換區(qū)百分比, 運(yùn)行:

  1. earlyoom -s <PERCENT_HERE>

在幫助部分,可以看到更多詳細(xì)信息:

  1. $ earlyoom -h
  2. earlyoom 0.12
  3. Usage: earlyoom [OPTION]...
  4.  
  5. -m PERCENT set available memory minimum to PERCENT of total (default 10 %)
  6. -s PERCENT set free swap minimum to PERCENT of total (default 10 %)
  7. -M SIZE set available memory minimum to SIZE KiB
  8. -S SIZE set free swap minimum to SIZE KiB
  9. -k use kernel oom killer instead of own user-space implementation
  10. -i user-space oom killer should ignore positive oom_score_adj values
  11. -d enable debugging messages
  12. -v print version information and exit
  13. -r INTERVAL memory report interval in seconds (default 1), set to 0 to
  14. disable completely
  15. -p set niceness of earlyoom to -20 and oom_score_adj to -1000
  16. -h this help text

現(xiàn)在,你再也不用擔(dān)心內(nèi)存消耗***的進(jìn)程了。希望這能給你幫助。更多的好內(nèi)容將會(huì)到來(lái),敬請(qǐng)期待。

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2019-12-16 10:43:38

Linux內(nèi)存消耗進(jìn)程

2019-11-06 15:58:54

Linux內(nèi)存消耗進(jìn)程

2023-03-05 16:40:07

linux進(jìn)程內(nèi)存

2021-10-25 12:23:06

Linux僵尸進(jìn)程

2022-05-27 11:59:22

Linux內(nèi)存CPU

2021-11-29 20:44:31

Linux內(nèi)存進(jìn)程

2018-11-01 10:59:52

Linux內(nèi)存進(jìn)程

2018-03-30 17:51:17

Linux命令查找文件

2018-06-05 08:51:04

Linux結(jié)束進(jìn)程中止程序

2010-04-22 15:26:53

Oracle進(jìn)程

2010-04-16 17:35:39

Oracle進(jìn)程

2019-12-16 09:10:38

Linux中央處理器進(jìn)程

2019-12-16 11:00:04

LinuxCPU進(jìn)程

2011-01-26 13:26:32

Linux進(jìn)程

2018-10-08 08:20:25

Linux進(jìn)程端口號(hào)

2023-01-30 14:27:14

Linux進(jìn)程

2019-02-26 10:00:37

Linux命令內(nèi)存

2010-01-28 10:06:05

Linux系統(tǒng)調(diào)用

2017-07-21 13:25:33

LinuxMD5哈希恢復(fù)文件

2019-01-03 16:04:13

內(nèi)存Linux PoC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)