加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux控制Killed的主要原因是什么,怎样查看Killed日志

发布时间:2023-09-06 12:05:49 所属栏目:Linux 来源:网络
导读:   在实际应用中,我们有时候会遇到“Linux触发Killed的原因是什么,如何查看Killed日志”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“Linux触
  在实际应用中,我们有时候会遇到“Linux触发Killed的原因是什么,如何查看Killed日志”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“Linux触发Killed的原因是什么,如何查看Killed日志”文章能帮助大家解决问题。
 
  在linux中,出现killed的原因是系统资源不足或内存不足;当系统资源不足时,Linux内核也可以决定终止一个或多个进程,内存不足时会在系统的物理内存耗尽时触发killed,可以利用“dmesg | tail -7”命令来查看killed日志。
 
  触发Killed常见原因
 
  当系统资源不足时,Linux 内核也可以决定终止一个或多个进程。 一个非常常见的例子是内存不足 (OOM) killer,会在系统的物理内存耗尽时触发。
 
  当内存不足时,内核会将相关信息记录到内核日志缓冲区中,该缓冲区可通过 /dev/kmsg 获得。
 
  有几个工具/脚本/命令 可以更轻松地从该虚拟设备读取数据,其中最常见的是 dmesg 和 journalctl。
 
  查看Killed日志
 
  使用sudo dmesg | tail -7命令(任意目录下,不需要进入log目录,这应该是最简单的一种)
 

  可以看到:
 
  oom-kill之后,就是解释那个被killed的程序的pid和uid
 
  Out of memory: Killed process 1138439 (python3) total-vm:8117956kB, anon-rss:5649844kB,内存不够
 
  total_vm:总共使用的虚拟内存 Virtual memory use (in 4 kB pages)
 
  8117956/1024(得到MB)/1024(得到GB)=7.741GB
 
  rss:常驻内存使用Resident memory use (in 4 kB pages)
 
  5649844/1024/1024=5.388GB
 
  扩展知识
 
  使用下面的这几行命令
 
  journalctl --list-boots |
 
  awk ‘{ print $1 }’ |
 
  xargs -I{} journalctl --utc --no-pager -b {} -kqg ‘killed process’ -o verbose --output-fields=MESSAGE
 
  就可以直接得到,最关键的信息
 
  hs@hs:~$ journalctl --list-boots | \
 
  >     awk '{ print $1 }' | \
 
  >     xargs -I{} journalctl --utc --no-pager -b {} -kqg 'killed process' -o verbose --output-fields=MESSAGE
 
  Mon 2022-02-14 08:48:43.684987 UTC [s=ed0a1ecfd36e41bda458e5e111c46e95;i=d4573;b=7bc379f894944dcd81ae32ff54afa009;m=456b0ad36d2;t=5d7f67bdee47b;x=5bfe01f8e2ca9b2c]
 
      MESSAGE=Out of memory: Killed process 1125888 (python3) total-vm:8530488kB, anon-rss:5653404kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:12552kB oom_score_adj:0
 
  Mon 2022-02-14 09:29:43.854158 UTC [s=ed0a1ecfd36e41bda458e5e111c46e95;i=d4785;b=7bc379f894944dcd81ae32ff54afa009;m=45743506aa5;t=5d7f70e82184e;x=9b55cfb2e7c081e7]
 
      MESSAGE=Out of memory: Killed process 1138439 (python3) total-vm:8117956kB, anon-rss:5649844kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:12544kB oom_score_adj:0
 
  网上更常见的似乎是:
 
  journalctl -xb | egrep -i 'killed process’
 
  hs@hs:~$ journalctl -xb | egrep -i 'killed process'
 
  Feb 14 08:48:43 hs kernel: Out of memory: Killed process 1125888 (python3) total-vm:8530488kB, anon-rss:5653404kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:12552kB oom_score_adj:0
 
  Feb 14 09:29:43 hs kernel: Out of memory: Killed process 1138439 (python3) total-vm:8117956kB, anon-rss:5649844kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:12544kB oom_score_adj:0
 
  Feb 15 03:42:08 hs sudo[1151639]:       hs : TTY=pts/0 ; PWD=/home/hs ; USER=root ; COMMAND=/usr/bin/egrep -i -r killed process /var/log
 
  以及
 
  sudo dmesg | egrep -i -B100 'killed process'
 
  # 但是这个会输出非常多的信息。。。
 
  其中-B100,表示 'killed process’之前的100行内容
 

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章