当前位置: 首页 > news >正文

Linux土遁术之监测监测进程打开文件

分析问题过程中,追踪进程打开的文件可以在许多不同情况下有用,体现在以下几个方面:

故障排除和调试: 当程序出现问题、崩溃或异常行为时,追踪进程打开的文件可以帮助您找出问题的根本原因。这有助于快速定位错误,尤其是在访问文件时发生的错误。

性能分析和优化: 了解进程打开了哪些文件可以帮助您分析程序的性能问题。如果程序频繁打开和关闭文件,可能会导致性能下降。通过追踪文件操作,您可以识别性能瓶颈,从而采取相应的优化措施。

权限和安全审计: 在安全方面,追踪进程打开的文件可以帮助您监控和审计系统上的文件访问。这有助于检测异常活动、追踪潜在的安全漏洞以及识别潜在的威胁。您可以确保只有授权的进程可以访问特定的文件。

授权和访问控制: 如果您想要确保某些文件只能由特定的进程或用户访问,可以追踪进程打开的文件,并根据需要执行授权和访问控制。

资源使用和泄漏检测: 对于服务器或多租户环境,追踪进程打开的文件可以帮助您监控资源的使用情况。这有助于识别资源泄漏、滥用或不必要的文件操作,以便进行适当的资源管理。

合规性和法律要求: 在一些情况下,您可能需要监控特定进程的文件访问,以满足法律、合规性或监管要求。追踪进程打开的文件可以帮助您确保满足相关要求。

总之,追踪进程打开的文件可以帮助您更好地理解程序的行为,从而更好地管理、优化和保护系统。不同的使用情况可能需要不同的方法和工具来实现这一目标。

在 Linux 中,要追踪进程打开了哪些文件,您可以使用工具来监视系统调用或使用调试工具。以下是一些常用的方法:

strace:
strace 是一个命令行工具,可以跟踪和记录进程的系统调用。您可以使用以下命令来跟踪一个进程的系统调用,并查看它打开了哪些文件:
strace -e open,openat <command>
command>是要执行的命令,-e open,openat 指定要跟踪的系统调用类型。

lsof:
lsof(List Open Files)是一个用于显示打开文件的命令行工具。您可以使用以下命令来查看指定进程打开了哪些文件,命令如下:
lsof -p <pid>
pid是要查询的进程的进程 ID。

使用 ptrace 调试工具:
如果想要更底层的控制,可以使用 ptrace 调试工具来追踪进程的行为。可以编写一个小的调试程序,使用 ptrace 跟踪系统调用并记录 open 系统调用的参数。

以上这些方法都可以帮助追踪进程打开了哪些文件,具体使用哪种方法取决于问题的需求和环境,这里介绍另外一种非侵入式的调试方法,开发一个内核模块,利用内核提供的KPROBE机制探测OPEN系统调用,得到被打开的文件名字,这个方法和PTRACE思想类似,但前者是非侵入式调试,不会影响被探测程序。

模块代码:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/kprobes.h>static char file_name[256];static int entry_handler(struct kprobe *p, struct pt_regs *regs)
{const char __user *filename = (const char __user *)regs->si;copy_from_user(file_name, filename, sizeof(file_name));file_name[sizeof(file_name) - 1] = '\0';if(strstr(file_name, "fkwq")) {pr_info("comm %s Open syscall intercepted. File name: %s\n", current->comm, file_name);}return 0;
}static struct kprobe kp = {.symbol_name = "do_sys_open",.pre_handler = entry_handler,
};static int __init kprobe_init(void)
{int ret = register_kprobe(&kp);if (ret < 0) {pr_err("Failed to register kprobe: %d\n", ret);return ret;}pr_info("Kprobe registered\n");return 0;
}static void __exit kprobe_exit(void)
{unregister_kprobe(&kp);pr_info("Kprobe unregistered\n");
}module_init(kprobe_init);
module_exit(kprobe_exit);
MODULE_LICENSE("GPL");

Makefile:

ifneq ($(KERNELRELEASE),)
CFLAGS_seqfile.o:=-I$(src)
obj-m:=probename.o
else
KERNELDIR:=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
all:$(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean:rm -rf *.o *.mod.c *.mod.o *.ko *.symvers *.mod .*.cmd *.order
format:astyle --options=linux.astyle *.[ch]
endif

测试过程中,监测打开的fkwq.txt文件,程序中对文件名进行了过滤,否则打印文件过多,测试界面会刷屏。

监控modprobe打开的文件路径:/lib/modules/5.4.0-150-generic/kernel/arch/x86/kvm/kvm.ko


结束

相关文章:

Linux土遁术之监测监测进程打开文件

分析问题过程中&#xff0c;追踪进程打开的文件可以在许多不同情况下有用&#xff0c;体现在以下几个方面&#xff1a; 故障排除和调试&#xff1a; 当程序出现问题、崩溃或异常行为时&#xff0c;追踪进程打开的文件可以帮助您找出问题的根本原因。这有助于快速定位错误&…...

css让多个盒子强制自动等宽

1.width: calc( 100 / n% ) 2.display:flex; flex:1;width:100px; 3.display:grid;grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); 但是其中某一个内容较长的时候 会破坏1:1:1的平衡 这个时候发现附件名字过长导致不等比例&#xff0c;通过查看阮一峰flex文…...

【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)

zhi.oscs1024.com​​​​​ 漏洞类型反序列化发现时间2023-08-29漏洞等级高危MPS编号MPS-qkdx-17bcCVE编号CVE-2023-40195漏洞影响广度广 漏洞危害 OSCS 描述Apache Airflow Spark Provider是Apache Airflow项目的一个插件&#xff0c;用于在Airflow中管理和调度Apache Spar…...

树模型与集成学习:LightGBM

目录 树模型与集成学习 LightGBM 的贡献 LightGBM 的贡献&#xff1a;单边梯度抽样算法 LightGBM 的贡献&#xff1a;直方图算法 LightGBM 的贡献&#xff1a;互斥特征捆绑算法 LightGBM 的贡献&#xff1a;深度限制的 Leaf-wise 算法 树模型与集成学习 树模型是非常好的…...

PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例

拼多多商品详情原数据API接口的作用是获取拼多多电商平台上某一商品的详细信息&#xff0c;包括商品的标题、价格、库存、图片、描述、包邮信息、销量、评价、优惠券等数据。通过该API接口可以获取到商品的原始数据&#xff0c;用于分析、筛选和展示商品信息。 pinduoduo.item…...

数据结构(Java实现)-二叉树(下)

获取二叉树的高度 检测值为value的元素是否存在(前序遍历) 层序遍历 判断一棵树是不是完全二叉树 获取节点的路径 二叉树的最近公共祖先...

如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?

作者&#xff1a;深耕行业的 SmartX 金融团队 张瑞松 运维人员在日常管理集群时&#xff0c;有时难免会产生这样的困惑&#xff1a; 新业务准备上线&#xff0c;在具备多套存储的情况下&#xff0c;应如何选择承载业务的存储环境&#xff1f; 业务虚拟机刚上线时运行速度很快…...

固定资产管理措施怎么写

固定资产管理措施是指企业在进行固定资产管理时所采取的各种措施和方法。以下是一些常见的固定资产管理措施&#xff1a;  建立完善的固定资产管理制度。制定明确的资产采购、使用、维护、报废等流程和标准&#xff0c;确保资产管理的规范性和透明度。  采用先进的资产管理…...

C语言中typedef和const的区别

昨天面试的时候面试官问了这个问题&#xff0c;平时也有见过这两个类型限定词&#xff0c;可能是因为不怎么使用的原因&#xff0c;当问到它们的区别时&#xff0c;我不知道从哪个方面开始回答。 用 typedef 定义新的类型名 类型定义的书写格式为 typedef 类型 被定义的类型名 …...

大数据系列教程之 Kafka基础

kafka概述 一、kafka概述 1.1 定义1.2 消息队列 1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种形式1.3 Kafka 基础架构二、kafka安装部署 2.1安装部署 2.1.1.jar包下载2.1.2.解压到指定的文件夹下2.1.3.创建两个文件夹以供后续使用2.1.4. 修改配置文件 &#xff08;1&…...

【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化

Go语言是一种快速、简洁且高效的编程语言&#xff0c;它在处理日期与时间方面提供了丰富的标准库函数。本文将详细介绍Go语言中处理日期与时间的函数&#xff0c;涵盖常用的日期时间操作、格式化、时区转换等内容&#xff0c;并介绍time.Time结构体中的相关方法。 时间的表示与…...

抽象工厂模式:创建相关对象族

欢迎阅读设计模式系列的第四篇文章&#xff01;在前面的文章中&#xff0c;我们已经学习了设计模式的基本概念以及工厂方法模式的应用。 今天&#xff0c;我们将继续深入&#xff0c;介绍第三个模式——抽象工厂模式。 抽象工厂模式简介 抽象工厂模式是一种创建型设计模式&a…...

uniapp:安卓permission权限表及setting表

安卓permission权限表 权限名称说明android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词android.permission.WRITE_SYNC_SETTINGS写入 Google 在线同步设置android.permission.WRITE_SOCIAL_STREAM读取用户的社交信息流android.permission.WRITE_SMS允…...

汽车服务门店小程序模板制作指南

在数字化时代&#xff0c;一个小程序的力量不可忽视。它不仅是展示品牌形象和提供用户服务的重要工具&#xff0c;更是扩大客户群体和提高营收的关键手段。对于汽车服务门店来说&#xff0c;拥有一个精美且功能齐全的小程序&#xff0c;更将成为你在竞争激烈的市场中的重要武器…...

Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

时隔两个月&#xff0c; Apache SeaTunnel 终于迎来大版本更新。此次发布的 2.3.3 版本在功能和性能上均有较大优化改进&#xff0c;其中大家期待已久的 CDC Schema evolution&#xff08;DDL 变更同步&#xff09;、主键 Split 拆分、JDBC Sink 自动建表功能、SeaTunnel Zeta …...

工厂方法模式的概述和使用

目录 一、工厂方法模式概述1. 定义2. 使用动机 二、工厂方法模式结构1. 模式结构2. 时序图 三、工厂方法模式的使用实例四、工厂方法模式的优缺点五、工厂方法模式在Java中应用 原文链接 一、工厂方法模式概述 1. 定义 工厂方法模式(Factory Method Pattern)又称为工厂模式&…...

HP惠普星15青春版/惠普小欧笔记本电脑15s-du1008tx原装出厂Win11系统

适用型号&#xff1a;15s-du1007tx、15s-du1008tx、15s-du1009tx、15s-du1010tx、15s-du1011tx、15s-du1012tx、15s-du1013tx 自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 所需要工具&#xff1a;32G或以上的U盘 文件格式&#xff1a;ISO 文件大…...

聊聊检索增强,LangChain一把梭能行吗?

背景 ChatGPT诞生之初&#xff0c;大家仿佛从中看到了未来&#xff1a;可以拿着大语言模型&#xff08;LLM&#xff09;这把锤子&#xff0c;锤遍业务上的钉子。其中最被看好的场景&#xff0c;莫过于搜索&#xff0c;不仅是微软、谷歌、百度这样的大公司将LLM用到自己的搜索业…...

【力扣】343. 整数拆分 <动态规划、数学>

【力扣】343. 整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。返回可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出:…...

数据结构--5.1图的存储结构(十字链表、邻接多重表、边集数组)

目录 一、十字链表&#xff08;Orthogonal List&#xff09; 二、邻接多重表 三、边集数组 四、深度优先遍历 一、十字链表&#xff08;Orthogonal List&#xff09; 重新定义顶点表结点结构&#xff1a; datafirstInfirstOut 重新定义边表结构结点&#xff1a; tailV…...

Overleaf项目本地化实战:用VS Code插件管理、Git版本控制,再搭配Copilot提效

Overleaf项目本地化实战&#xff1a;用VS Code插件管理、Git版本控制&#xff0c;再搭配Copilot提效 对于经常使用LaTeX撰写学术论文或技术文档的用户来说&#xff0c;Overleaf无疑是一个强大的云端协作平台。然而&#xff0c;当项目规模扩大、需要更精细的版本控制时&#xff…...

数据驱动决策的基石:Awesome Public Datasets实用探索手册

数据驱动决策的基石&#xff1a;Awesome Public Datasets实用探索手册 【免费下载链接】awesome-public-datasets A topic-centric list of HQ open datasets. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-public-datasets 在数据驱动决策日益成为商业竞…...

vLLM-v0.17.1部署实战教程:3步启用OpenAI兼容API服务

vLLM-v0.17.1部署实战教程&#xff1a;3步启用OpenAI兼容API服务 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;以其出色的速度和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发&#xff0c;现在已经发展成为一…...

重装系统后的环境快速恢复:包含BERT模型部署的自动化脚本

重装系统后的环境快速恢复&#xff1a;包含BERT模型部署的自动化脚本 重装系统&#xff0c;对开发者来说&#xff0c;就像一场“数字大扫除”。清爽是清爽了&#xff0c;但看着空空如也的终端和待部署的一长串服务列表&#xff0c;那种从头再来的疲惫感瞬间涌上心头。尤其是当…...

古基因组学:降解DNA的损伤模式、污染评估与群体历史推断

点击 “AladdinEdu&#xff0c;你的AI学习实践工作坊”&#xff0c;注册即送-H卡级别算力&#xff0c;沉浸式云原生集成开发环境&#xff0c;80G大显存多卡并行&#xff0c;按量弹性计费&#xff0c;教育用户更享超低价。 摘要&#xff1a;古基因组学通过对古代生物遗骸中高度降…...

价值投资中的智能城市废水处理与再利用系统分析

价值投资中的智能城市废水处理与再利用系统分析 关键词:价值投资、智能城市、废水处理、废水再利用、系统分析 摘要:本文聚焦于价值投资视角下的智能城市废水处理与再利用系统。首先介绍了研究的背景,包括目的、预期读者、文档结构和相关术语。接着阐述了智能城市废水处理与…...

OpenClaw开源项目深度体验:对比其与星图GPU平台Qwen3-14B-Int4-AWQ部署差异

OpenClaw开源项目深度体验&#xff1a;对比其与星图GPU平台Qwen3-14B-Int4-AWQ部署差异 1. 项目概览与核心功能 OpenClaw是近期备受关注的开源大模型项目&#xff0c;主打轻量化和易部署特性。它采用混合专家架构(MoE)&#xff0c;在保持模型性能的同时显著降低了计算资源需求…...

初学Java之范型

范型包装类包装类的定义包装类的作用场景1&#xff1a;我想把数字放进列表里场景2&#xff1a;我想让方法返回"没有结果"场景3&#xff1a;我想用工具类处理数字场景4&#xff1a;泛型方法要求对象类型场景5&#xff1a;我想在同步代码块里用数字作为锁装箱与拆箱定义…...

HUNYUAN-MT 7B翻译终端Python爬虫数据清洗实战:多语言文本归一化处理

HUNYUAN-MT 7B翻译终端Python爬虫数据清洗实战&#xff1a;多语言文本归一化处理 1. 引言 你有没有遇到过这种情况&#xff1f;辛辛苦苦用Python爬虫从全球各地的网站、论坛、社交媒体上抓取了一大堆数据&#xff0c;准备做分析或者训练模型&#xff0c;结果打开一看&#xf…...

Fish-Speech-1.5技术报告解读:LLM如何提升TTS表现

Fish-Speech-1.5技术报告解读&#xff1a;LLM如何提升TTS表现 1. 引言 你有没有想过&#xff0c;为什么有些语音合成系统听起来还是那么"机械"&#xff0c;而有些已经几乎和真人无异&#xff1f;这背后的技术差距到底在哪里&#xff1f;今天我们要聊的Fish-Speech-…...