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

【Linux】内核文件系统系统调用流程摸索

 内核层可以看到当前调用文件处理的进程ID

这个数据结构是非常大的:

 

 

我们打印的pid,tgid就是从这里来的,然后只需要找到pid_t的数据类型就好了。 

下图这是运行的日志信息: 

从上述日志,其实我也把write的系统调用加了入口的打印信息,因为需要验证自己的想法是否正确,看到的日志是这样的(打印日志添加上文件,函数,行是多么的方便,一下子找到所需要的信息):

在心得里写到日志量非常大的问题,其中有部分是针对文件打开的系统调用,从系统开机 后大概2分钟内openat2这个接口被调用了63.8万次,详见:

test_log/syslog_filename_can_print · r77683962/linux-6.9.0 - Gitee.comicon-default.png?t=N7T8https://gitee.com/r77683962/linux-6.9.0/blob/master/test_log/syslog_filename_can_print这也即是说打印日志一定要小心,不然内核产生的日志增长会非常非常快。

在对文件操作的时间,当时想到一个办法,打印日志的时候把文件名前4个字母跟目标比对,如果是某字符串则显示,代码如下:

登录 - Gitee.comicon-default.png?t=N7T8https://gitee.com/r77683962/linux-6.9.0/commit/9a8f609089121ac6390d6ea562ec26a5254e4b4d

测试效果(截图前面其实也创建了test1.txt):

这样也可以大量减少日志打印,不过添加有些这样的日志判断有难度。 

在修改内核后不能正常起来操作系统当前来看有三种情况:

1、代码内存越界,就是前一阵子碰到的打印filename这个变量,一般会出调用栈,不过不太容易看得到,因为开机日志显示翻页太快,页面显示到后边就卡死,黑白屏;

2、第二种:好像进入到 busybox,可以手动打印些dmesg的日志,黑白屏;

3、第三种:当图形化操作了,这里一直转,转二三十分钟,猜测是初始化日志打印太多:

其实这种过程是挺有意思,有些书讲内核运行原理,如果再配套查看内核运行实时日志,这样会更有意思,因为书上的知识是死的,而操作系统是活的,是动态的。

http://www.lryc.cn/news/399125.html

相关文章:

  • 【HZHY-AI300G智能盒试用连载体验】文档资料
  • Linux--深入理与解linux文件系统与日志文件分析
  • Postman 中的 API 安全性测试:最佳实践与技巧
  • PTC可复位保险丝 vs 传统型保险丝:全面对比分析
  • 深入了解Rokid UXR2.0 SDK内置的Unity AR Glass开发组件
  • Lottery 分布式抽奖(个人向记录总结)
  • 我的AI音乐梦:ChatGPT帮我做专辑
  • 新手-前端生态
  • C#中的类
  • 探索数据库编程:基础与进阶之存储函数
  • Count数据转换为TPM数据方法整理-常规方法、DGEobj.utils和IOBR包
  • 简易限流实现
  • 用Qwt进行图表和数据可视化开发
  • sqlalchemy使用with_entities返回指定数据列
  • express
  • HTML网页大设计-家乡普宁德安里
  • 深度学习:从数据采集到模型测试的全面指南
  • Excel第29享:基于sum嵌套sumifs的多条件求和
  • Elasticsearch:Node.js ECS 日志记录 - Morgan
  • ChatGPT对话:Python程序自动模拟操作网页,无法弹出下拉列表框
  • Unity 之 抖音小游戏集成排行榜功能详解
  • 【学习笔记】Redis学习笔记——第13章 客户端
  • Android中的JSON解析:从基础到实践
  • 力扣-回溯法
  • 240713_昇思学习打卡-Day25-LSTM+CRF序列标注(4)
  • python requests关闭https校验
  • PG大会周五于杭州举办;Pika发布4.0;阿里云MySQL上线Zero-ETL集成能力
  • 虚拟机vmware网络设置
  • 数学建模国赛入门指南
  • Java基础之集合