你知道abrt-hook-ccpp吗

2023-05-16

1、什么是abrt-hook-ccpp

abrt也可以叫abrtd,展开应该是automatically bug report daemon,也就是自动错误报告守护进程。
从字面意义就可以看出,他是一个守护进程,监控进程,如果进程出现崩溃,那么他就会开始工作,收集bug,收集现场。用于在发生崩溃时报告软件包中的错误

2、abrt配置文件解析

2.1、配置文件abrt.conf

配置文件完整路径:
/etc/abrt/abrt.conf

a、MaxCrashReportsSize
控制dump的最大size,如果程序崩溃也不产生dump文件,那可以试试将这个配置项改为0,无限制

b、DumpLocation
存放dump文件的目录,默认是/var/spool/abrt,当abrt工作时,会创建对应的dump文件目录

c、WatchCrashdumpArchiveDir
如果你想让abrtd自动解包出现在这个目录下的crashdump 包,启用此选项,并制定这个目录,默认是/var/spool/abrt-upload

d、DeleteUploaded
如果想要自动清除上传目录,必须调整selinux策略,默认是no

e、AutoreportingEvent
配置的是事件的名称,在检测到问题后自动运行这个事件。该事件应该执行一些快速分析,如果知道问题,则将以70退出。默认是report_uReport,并且如果想启用这个,AutoreportingEnabled需要配置为yes

f、AutoreportingEnabled
启用自动运行在AutoreportingEvent选项中配置的事件。默认为no

g、ShortenedReporting
在AutoreportingEvent完成后,启用缩短的GUI报告,默认为yes

h、PrivateReports
默认值为yes,如果你想允许普通用户有文件系统权限读取存储在DumpLocation的问题数据。那就设置为no。
问题数据包含/var/log/messages, dmesg和sosreport数据的摘要,由abrtd生成在用户根下。

i、DebugLevel
允许ABRT工具检测ABRT本身的问题。通过增加该值,可以强制ABRT检测、处理和报告ABRT中的问题。但是,在处理自身引起的问题时,ABRT可能会陷入无限循环。默认值是0(non debug mode)

2.2、配置文件abrt-action-save-package-data.conf

配置文件完整路径:
/etc/abrt/abrt-action-save-package-data.conf

a、OpenGPGCheck
只分析签名包中的崩溃,默认为yes

b、BlackList
列入黑名单的包,默认值是“nspluginwrapper, valgrind, strace, mono-core“

c、ProcessUnpackaged
处理不属于任何包的可执行文件中的崩溃?默认是no,有时候有些进程崩溃但是没有产生dump文件,可以把这个改成yes再试试。

d、BlackListedPaths
可执行路径黑名单(shell模式)
默认值是“/usr/share/doc/, /example, /usr/bin/nspluginviewer, /usr/lib/xulrunner-/plugin-container”

e、Interpreters
编译器,默认值是“python2, python2.7, python, python3, python3.3, perl, perl5.16.”

3、问题案例分享

3.1、问题现象

服务器出现两个告警
a、根目录磁盘空间告警
b、服务器内存使用率告警

在这里插入图片描述

3.2、问题定位

a、内存问题定位:
top命令 发现有三个abrt-hook-ccpp进程消耗资源非常大
在这里插入图片描述
b、根目录磁盘空间使用率问题定位:
从根目录一路使用”du ./ --max-depth=1”,找到占用空间最大的目录是/var/spool/abrt
在这里插入图片描述

c、确定原因
于是可以看出不管是磁盘空间使用正常还是内存使用突增,都是和abrt-hook-ccpp有关系

在messages日志中可以搜索abrt关键字,可以看到是 三个 vim 进程奔溃导致拉起的abrt-hook-ccpp
在这里插入图片描述

而abrt-hook-ccpp产生的目录名后面的数字也正是对应崩溃程序的进程ID,搜索之后发现是vim进程
aaa

本次问题是有人使用vim查看日志文件,而文件过大,vim崩溃导致

3.3、问题处理

解决方法很简单,kill掉三个vim进程就可以了,kill掉之后,三个abrt-hook-ccpp进程也消失了,abrt-hook-ccpp产生的文件也消失了

不过为了避免再次发生这样的事情,可以关闭abrt-hook-ccpp

systemctl stop abrt-ccpp.service
systemctl disable abrt-ccpp.service
systemctl status abrt-ccpp.service

转载至https://blog.csdn.net/github_30641423/article/details/123908081

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你知道abrt-hook-ccpp吗 的相关文章

  • 使用LD_PRELOAD方法注入printf时出现问题

    我在我的一个项目中破解了 glibc 的 printf 并遇到了一些问题 您能提供一些线索吗 我关心的问题之一是为什么同样的 malloc free 解决方案可以完美地工作 如附件所示 PrintfHank c 包含我自己的 printf
  • 监控应用程序对 DLL 的调用

    简而言之 我想监视从应用程序到 DLL 的选定调用 我们有一个旧的 VB6 应用程序 我们丢失了它的源代码 当时公司没有使用源代码控制 此应用程序使用第 3 方 DLL 我想在新的 C 应用程序中使用这个 DLL 不幸的是 DLL API
  • SVN 挂钩不工作

    我有一个分支和主干的服务器存储库 分支是所有团队成员的存储库 我正在尝试使用svn hooks仅在我的分支下的仓库中 但它似乎工作得不好 以下是我尝试采取的步骤 检查过了my repo从远程服务器的branch my repo 自本地回购以
  • 是否可以接受用户输入作为远程 git post-receive 挂钩的一部分?

    我有一个接收后钩子 每当我们推送主分支时 它就会部署我们的主分支 我想让部署成为可选的 该钩子要求简单的 Y N 响应来实现此目的 bash伪代码如下 echo Should I deploy this code now Enter Y N
  • 提交颠覆时可以修改文本文件吗?

    我想在正在提交的文本文件上运行以下脚本 Send the commands H and w to ed ed will append newline if the file does not end in one printf s n H
  • 使用 WinAPI 挂钩对程序进行沙箱处理

    我想对本机代码进行沙箱处理 并使用 WinAPI 和系统函数的挂钩来阻止或允许该程序执行某些操作 例如读 写文件 修改 Windows 注册表 使用 Internet 连接 这是一种良好且安全的方法吗 该程序绕过这样的安全层有多困难 我已经
  • Git CHMOD 接收后挂钩

    我在网络服务器上使用一个裸露的远程存储库 并带有一个接收后挂钩 该挂钩会自动将我的文件推送到 public html 目录中 问题是 我使用的是 codeigniter index php 文件必须是 chmod 755 我使用 filez
  • 日志记录挂钩的挂钩过程从未被调用

    我正在尝试创建一个简单的应用程序来记录和播放一系列键盘和鼠标命令 宏 阅读文档并得出结论 最合适的实现 如果不是唯一的实现 是设置 Windows 日志记录挂钩 WH JOURNALRECORD 并用日志回放一个 WH JOURNAL PL
  • 挂钩 Python 中的每个函数调用

    我有一个庞大的代码库 其中包含数千个函数 我想在每次函数调用之前和之后 函数启动和结束时启用代码执行 有没有一种方法可以在不重新编译 Python 或向每个函数添加代码的情况下完成此操作 有没有办法挂钩我的代码中的每个函数调用 是的 您可以
  • 关闭挂钩 C++

    无论何种终止 异常 正常 未捕获的异常等 是否有某种方法可以在终止时运行代码 我知道它在 Java 中实际上是可能的 但是在 C 中也可能吗 我假设一个Windows环境 不 如果有人调用TerminateProcess 您的进程将被销毁
  • 低级键盘挂钩

    我刚刚买了一个新键盘 我有兴趣准确跟踪键盘整个使用寿命期间我按下 敲击的次数 我只想记录 keyUp 因为我不关心重复 我一直在搜索最好的方法来做到这一点 但我什至不知道该采取什么方法 所以我在智能搜索方面遇到了困难 另外 我真正使用过的唯
  • pthread_create 的钩子

    是否有 在 glibc 2 5 及更新版本中 为 pthread create 定义钩子的方法 有很多二进制应用程序 我想编写一个动态库通过 LD PRELOAD 加载 我可以在 main 属性构造函数 的入口处添加钩子 但是如何强制我的代
  • 注册一个全局钩子,检测鼠标是否拖动文件/文本

    我知道有可能为鼠标注册全局钩子 http www codeproject com KB cs globalhook aspx移动 按钮单击 滚动等 但我想知道是否有任何方法可以检测用户是否实际上使用全局挂钩拖动文件或文本 或其他内容 似乎找
  • “安全”DLL 注入

    抱歉 这不是一个很好的问题 我有一个程序 当从资源管理器打开文件时需要发出警报 即调用 ShellExecute A W 不幸的是 微软删除了允许您在 Vista 及更高版本中挂钩这些事件的 COM 接口 IShellExecuteHook
  • 如何为钩子创建蹦床函数

    我对挂钩很感兴趣 我决定看看是否可以挂钩一些函数 我对使用 detours 这样的库不感兴趣 因为我想拥有自己做的经验 通过我在互联网上找到的一些资源 我能够创建下面的代码 这是基本的 但效果还不错 然而 当挂钩由多个线程调用的函数时 它被
  • Pagedown markdown 脚本插入图像 url 一次

    我有一个修改后的 pagedown markdown 标记脚本 用于将图像 url 插入编辑器 但它仅在第一次起作用 我已经用注释解释了我的代码
  • 在 Woocommerce 中将 Avada Catalog 排序挂钩覆盖回默认值

    我正在尝试通过将以下代码添加到 Avada child 来修改 Woocommerce 排序选项以获得自定义排序选项function php file add custom sorting option add filter woocomm
  • 调用 GetPointerFrameTouchInfo 时出现错误 998(对内存位置的访问无效)[重复]

    这个问题在这里已经有答案了 我正在尝试致电GetPointerFrameTouchInfo函数来获取指针计数 但该函数似乎失败了 错误 998 对内存位置的访问无效 知道为什么会发生这种情况以及如何解决它吗 我试图在钩子过程中调用相同的方法
  • 用于阻止大于 20MB 的提交的预提交挂钩

    是否可以为 SVN 1 8 编写 prcommit 挂钩以避免提交大于 20MB 的文件 任何建议 将不胜感激 谢谢 我尝试过 但这不适用于二进制文件或其他文件扩展名 filesize SVNLOOK cat t TXN REPOS f w
  • 使用主题函数在 body 标记后插入代码

    我试图在开头添加一段代码everyDrupal 站点中的页面 因为我有不止一个page模板 我想以编程方式执行此操作 但没有成功 我还是个新手 虽然我了解了钩子 主题函数等的要点 但我只是想不出实现这一目标的正确方法 到目前为止我已经覆盖了

随机推荐