查看linux中程序是否被系统杀死,如何查看日志

这篇具有很好参考价值的文章主要介绍了查看linux中程序是否被系统杀死,如何查看日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在linux开发日常中,维护之前发布的程序,几台服务器只有一台在重启,而且不定期,查看服务日志也没有任何signal信号以及服务挂掉的原因打印,迫于无奈怀疑是linux系统给服务干掉了。于是想查看服务被杀掉的日志,看看系统日志,即可判断。

即途中目录下的messages文件,通过命令即可过滤信息查看是否被系统killed。

查看linux中程序是否被系统杀死,如何查看日志

 用以下命令查看系统日志信息!

egrep -i 'killed process' /var/log/messages

命令输出如下:

查看linux中程序是否被系统杀死,如何查看日志

 参数解析:

total-vm: total virtual memory. 进程使用的总的虚拟内存。
rss: resident set size. 驻留集大小。驻留集是指进程已装入内存的页面的集合。
anon-rss: anonymous rss. 匿名驻留集。比如malloc出来的就是匿名的。
file-rss: 映射到设备和文件上的内存页面。
shmem-rss: 大概是shared memory rss?

从上述输出可以看出被系统杀掉了!时间也能对上,9点52分被杀掉,至此已经排查出问题,就是服务器内存不够用所导致!!!准备修改这台服务器的服务权重,尽量少分配任务来减小这台服务器压力。

Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory()被触发,然后调用select_bad_process()选择一个”bad”进程杀掉。如何判断和选择一个”bad进程呢?linux选择”bad”进程是通过调用oom_badness(),挑选的算法和想法都很简单很朴实:最bad的那个进程就是那个最占用内存的进程。

基本概念

Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。

oom killer机制分析

oom killer是计算出选择哪个进程kill呢?我们先来看一下kernel提供给用户态的/proc下的一些参数: /proc/[pid]/oom_adj ,该pid进程被oom killer杀掉的权重,介于 [-17,15]之间,越高的权重,意味着更可能被oom killer选中,-17表示禁止被kill掉。 /proc/[pid]/oom_score,当前该pid进程的被kill的分数,越高的分数意味着越可能被kill,这个数值是根据oom_adj运算后的结果,是oom_killer的主要参考。

sysctl 下有2个可配置选项:

  • vm.panic_on_oom = 0 #内存不够时内核是否直接panic
  • vm.oom_kill_allocating_task = 1 #oom-killer是否选择当前正在申请内存的进程进行kil
  • 如果想修改被oom killer选中的概率,禁止或者给oom_adj最小或偏小的值,也可以通过sysctl调节oom killer行为

可以保护重要的进程不被OOM Killer干掉吗?还真是可以!

OOM Killer会检查 /proc/$pid/oom_score_adj文件来调整最终的分数 (oom_score)。所以我们可以通过在这个文件中给一个大的负数,以降低该进程被选中并终止的可能性。oom_score_adj可以在-1000到1000间变化。如果你给了-1000,进程即使使用了100%的内存也不会被OOM Killer干掉。可通过下面命令修改oom_score_adj(比如设为-200):文章来源地址https://www.toymoban.com/news/detail-451128.html

到了这里,关于查看linux中程序是否被系统杀死,如何查看日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Window系统查看端口是否启用以及占用程序

    1、打开DOS命令行窗口 开始—运行—cmd,或者是 window+R —cmd,调出命令窗口 2、查看当前正在使用的所有端口 命令: netstat -ao 包括协议,端口号,端口状态,使用该端口的进程号PID 3、如果端口过多,可以采用管道来查询过滤 命令: netstat -ao | findstr \\\"6379\\\" 可以查看到使用端口

    2024年02月10日
    浏览(48)
  • Linux 系统中查看系统日志方法

    Linux 系统提供了强大的日志功能,可以记录系统和应用程序的各种事件和错误信息。系统日志对于故障排除和性能监控非常重要。 1. 使用 journalctl 命令查看系统日志: journalctl 命令是 systemd 日志管理器的客户端工具,它可以查看 systemd 生成的日志。通过以下命令可以查看所

    2024年01月22日
    浏览(100)
  • Linux 进程异常退出 如何查看日志

    当进程异常退出时,可以通过以下步骤来查看日志: 找到进程的 PID(进程 ID),可以通过 ps 命令来查看: 找到进程的日志文件,一般情况下,进程的日志文件都会被记录在 /var/log 目录下,可以使用 ls 命令来查看: 打开日志文件,可以使用 tail 命令来查看日志文件的最后几

    2024年02月16日
    浏览(47)
  • linux下查看php进程,开启php-fpm&杀死php进程

    1、查看php进程 出现如图结果说明未开启 2、查看php安装路径 3、开启php-fpm 再次查看ps -ef |grep php 以树状图的方式展现php进程 4、关闭php-fpm

    2024年02月11日
    浏览(43)
  • linux系统重启 查看相关日志和历史记录

    last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名,而且还可以列出指定日期和时间登录的用户。输出到终端的每一行都包括用户名、会话终端、主机名、会话开始和结束的时间、会话持续的时间. 使用 last 命令来查询最近登录到系统的用户和系

    2024年02月13日
    浏览(91)
  • 【博客566】Linux内核系统日志查看方式汇总

    当出现一些网络异常或者程序异常,但是linux系统各项性能指标都正常时,有可能是一些内核异常导致的服务异常 1、系统启动后的信息和错误日志: cat /var/log/message 2、守护进程启动和停止相关的日志消息 cat /var/log/boot.log 3、系统异常日志 cat /var/log/syslog cat /var/log/kern journa

    2023年04月17日
    浏览(38)
  • linux 如何查看某个库是否安装以及安装位置,dpkg 详解,dpkg 查看对应的库安装路径命令

    dpkg 是 Debian 和 Ubuntu Linux 系统上的一个基本工具,用于管理 ‘.deb’ 包。它可以安装、删除、查询和配置软件包,并且还提供了一些常见的命令行选项。以下是一些 dpkg 命令的详细解释: 安装 .deb 包 使用以下命令来安装软件包: 这个命令会将软件包安装到系统上。如果该软

    2024年02月17日
    浏览(151)
  • 高薪程序员&面试题精讲系列141之如何管理项目中的日志?如何查看线上日志?

    项目日志有哪些级别? 项目日志具体怎么打印? 如何管理项目中的日志? 你用过哪些日志框架? 你了解ELK吗? 项目上线后怎么查看报错日志? 我们在进行项目开发时,除了进行编码实现业务功能之外,还要进行各种辅助的工作,比如要统计日志、项目运行、运营等各种信息

    2024年02月02日
    浏览(59)
  • 深入了解Linux下的dmesg指令:查看系统内核日志的利器

    简介: 在Linux系统中,了解系统的内核信息和故障诊断是至关重要的。而dmesg指令就是一个强大的工具,它可以帮助我们查看系统内核的日志信息,了解系统的运行状态和故障原因。本篇博客将以通俗易懂的方式,详细解析dmesg指令的功能和用法,并提供示例代码和参考链接,

    2024年02月08日
    浏览(53)
  • 云计算是否正在“杀死”运维

    一、云计算正在杀死运维吗? 随着云计算的发展,企业上云已经成为一种趋势。企业上云的初衷是把复杂的IT基础设施交给云平台去管理,企业可以专注于业务与应用、从而降低企业IT运营成本,提高IT部门工作效率。 因此有人会误以为,业务上云以后,运维就和企业没有关

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包