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

11-Linux文件系统与日志分析

11.1深入理解Linux文件系统

在处理Liunx系统出现故障时,故障的症状是最易发现。数学LInux系统中常见的日志文件,可以帮助管理员快速定位故障点,并及时解决各种系统问题。

11.1.1 inode与block详解

文件系统通常会将这两部分内容分别存放在inode和block中

1.inode和block概述

  • 操作系统读取硬盘时,多个扇区(每个扇区512字节)组成的块,最常见的是4KB及连续8个扇区组成一个block
  • 在块中必须找到一个地方储存文件的元信息,这个区域叫inode。一个文件必须占用一个inode,但至少占用一个block。

2.inode的内容

使用stat命令即可查看某个文件的inode信息

[root@localhost ~]# stat anaconda-ks.cfg 文件:"anaconda-ks.cfg"                                                #文件名字大小:1592          块:8          IO 块:4096   普通文件             #文件大小
设备:fd00h/64768d    Inode:268632130   硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2024-05-27 21:33:26.425066604 +0800                            #是最后一次改变文件或目录的时间
最近更改:2024-05-27 21:33:26.434067124 +0800                            #是最后一个访问文件或目录的时间
最近改动:2024-05-27 21:33:26.434067124 +0800                            
#是最后一个修改文件或目录的时间
创建时间:-

3.inode的号码

用户在访问文件时,表面上是用户通过文件名来打开文件,而实际系统内部的过程分成以下三步:

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在的block,并读出数据。

常见的查看inode号码方式有两种

    • ls -i命令:直接查看文件名所对应的inode号码
    • stat命令:通过查看文件inode信息而查看到inode号码

[root@localhost ~]# stat anaconda-ks.cfg 文件:"anaconda-ks.cfg"                                              大小:1592          块:8          IO 块:4096   普通文件             
设备:fd00h/64768d    Inode:268632130   硬链接:1                               #inode号268632130
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2024-05-27 21:33:26.425066604 +0800                            
最近更改:2024-05-27 21:33:26.434067124 +0800                           
最近改动:2024-05-27 21:33:26.434067124 +0800                            
创建时间:-
[root@localhost ~]# ls -i anaconda-ks.cfg                                     #inode号268632130
268632130 anaconda-ks.cfg

硬盘分区后的结构则是如图:

4.inode的大小

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。inode总数在格式化时就给定了,执行“df -i”命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。

[root@localhost ~]# df -i
文件系统                    Inode 已用(I)   可用(I) 已用(I)% 挂载点
devtmpfs                   116635     446    116189       1% /dev
tmpfs                      120245       2    120243       1% /dev/shm
tmpfs                      120245     606    119639       1% /run
tmpfs                      120245      19    120226       1% /sys/fs/cgroup
/dev/mapper/centos-root 100661248   64569 100596679       1% /
/dev/sda2                 2097152     331   2096821       1% /boot
/dev/sr0                        0       0         0        - /media/cdrom
tmpfs                      120245       1    120244       1% /run/user/0
[root@localhost ~]# 
  • 文件名包括特殊字符,可能无法正常删除,这时直接删除inode,能够起到文件的作用
  • 移动文件或一个重名名文件,只是改变文件名,不影响inode号码
  • 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名

11.1.2 硬链接与软连接

  1. 硬链接允许多个文件指向一个同一个inode号,但不能跨分区。其命令格式为
    ln 源文件  目标

  2. 软连接是再创建一个独立文件,因此可以跨分区。其命令格式为
ln -s 源文件或目录 目标文件或目录

11.1.3 EXT类型文件恢复

EXT类型文件恢复主要涉及在Linux系统中,当使用如

rm命令误删除EXT(如EXT3)文件系统上的文件时,采取的一系列步骤和工具来尝试恢复这些文件。以下是关于EXT3类恢复误删除文件。

  1. EXT3数据恢复

    [root@localhost ~]# http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2      #下载tar包 
    [root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs gcc*                                                  #下载依赖
    [root@localhost ~]# tar -xvf extundelete-0.2.4.tar.bz2                                                                  #解压下载的安装包
    [root@localhost extundelete-0.2.4]# make                                                                                #编译
    [root@localhost extundelete-0.2.4]# makeinstall                                                                        #编译加载
    [root@localhost extundelete-0.2.4]# fdisk /dev/sdb                                                                      #分区                                                        
    [root@localhost ~]# mkdir aaa                                                                                           #创建挂载点
    [root@localhost ~]# mkfs.ext3 /dev/sdb1                                                                                 #初始化成ext3类型
    [root@localhost ~]# mount /dev/sdb1 aaa                                                                                 #挂载到aaa
    [root@localhost ~]# cd aaa                                                                                              #cd得到aaa文件下并创建
    [root@localhost aaa]# echo a>a
    [root@localhost aaa]# echo b>b
    [root@localhost aaa]# echo c>c
    [root@localhost aaa]# echo d>d
    [root@localhost aaa]# ls  
    a  b  c  d  lost+found
    [root@bogon ~]# extundelete /dev/sdb1
    [root@bogon ~]# cd aaa
    [root@bogon aaa]# rm -rf a b
    [root@bogon aaa]# cd 
    [root@bogon ~]# umount aaa
    [root@bogon ~]# extundelete /dev/sdb1 --restore-all
    [root@bogon ~]# cd RECOVERED_FILES/
    [root@bogon RECOVERED_FILES]# ls
    file.12  file.13
    [root@bogon RECOVERED_FILES]# 

11.2.4日志管理

在Linux中,设置和配置一个日志服务器通常涉及到多个步骤,包括安装必要的软件包、配置日志文件的传输和存储等。以下是一个简化的步骤,使用rsyslog(或syslog-ng)和logrotate来管理日志,以及(可选的)使用Elasticsearch, Logstash, Kibana (ELK Stack) 来进行日志的集中存储、分析和可视化。

1. 使用rsyslog或syslog-ng收集日志

以rsyslog为例,你可以编辑/etc/rsyslog.conf或相关的配置文件来设置日志的接收和转发。以下是一个简化的配置示例,用于接收来自其他系统的UDP日志:

# /etc/rsyslog.conf 示例   # 允许接收UDP日志  $ModLoad imudp  $UDPServerRun 514   # 允许接收TCP日志(可选)  #$ModLoad imtcp  #$InputTCPServerRun 514  # 设置默认的日志文件路径和模板(可选) $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"  & ~ ?RemoteLogs   

 重启rsyslog服务以应用更改:

 systemctl restart rsyslog

2. 使用logrotate管理日志文件大小

你可以编辑/etc/logrotate.conf或/etc/logrotate.d/目录下的文件来设置日志文件的轮转策略。以下是一个示例:

# /etc/logrotate.d/remote 示例   /var/log/remote/*/*.log{       missingokmonthlycreate 0664 root utmpminsize 10Mrotate 2
} }

相关文章:

11-Linux文件系统与日志分析

11.1深入理解Linux文件系统 在处理Liunx系统出现故障时,故障的症状是最易发现。数学LInux系统中常见的日志文件,可以帮助管理员快速定位故障点,并及时解决各种系统问题。 11.1.1 inode与block详解 文件系统通常会将这两部分内容分别存放在…...

mac M1下安装PySide2

在M1下装不了PySide2, 是因为PySide2没有arm架构的包 1 先在M1上装qt5 安装qt主要是为了能用里面的Desinger, uic, rcc brew install qt5 我装完的路径在/opt/homebrew/opt/qt5 其中Designer就是用来设计界面的 rcc用resource compiler, 编绎rc资源文件的, 生成对应的py文件…...

超详解——识别None——小白篇

目录 1. 内建类型的布尔值 2. 对象身份的比较 3. 对象类型比较 4. 类型工厂函数 5. Python不支持的类型 总结: 1. 内建类型的布尔值 在Python中,布尔值的计算遵循如下规则: None、False、空序列(如空列表 [],空…...

C++的MQTT开发:使用Paho的C++接口实现消息发布、订阅、连接RabbitMQ

C Paho实现MQTT消息发布功能 要使用paho的cpp接口实现发布MQTT消息的功能,需要进行以下步骤: 安装paho库:首先从paho官方网站下载并安装paho的C库。可以从https://www.eclipse.org/paho/clients/cpp/ 下载适合操作系统的版本。 创建MQTT客户…...

深度网络学习笔记(二)——Transformer架构详解(包括多头自注意力机制)

Transformer架构详解 前言Transformer的整体架构多头注意力机制(Multi-Head Attention)具体步骤1. 步骤12. 步骤23. 步骤34. 步骤4 Self-Attention应用与比较Self-Attention用于图像处理Self-Attention vs. CNNSelf-Attention vs. RNN Transformer架构详…...

Python 快速查找并替换Excel中的数据

Excel中的查找替换是一个非常实用的功能,能够帮助用户快速完成大量数据的整理和处理工作,避免手动逐一修改数据的麻烦,提高工作效率。要使用Python实现这一功能, 我们可以借助Spire.XLS for Python 库,具体操作如下&am…...

KafkaStream Local Store和Global Store区别和用法

前言 使用kafkaStream进行流式计算时,如果需要对数据进行状态处理,那么常用的会遇到kafkaStream的store,而store也有Local Store以及Global Store,当然也可以使用其他方案的来进行状态保存,文本主要理清楚kafkaStream…...

PowerDesigner导入Excel模板生成数据表

PowerDesigner导入Excel模板生成数据表 1.准备好需要导入的Excel表结构数据,模板内容如下图所示 2.打开PowerDesigner,新建一个physical data model文件,填入文件名称,选择数据库类型 3.点击Tools|Execute Commands|Edit/Run Script菜单或按下快捷键Ctrl Shift X打开脚本窗口…...

STM32 HAL库开发——入门篇(3):OLED、LCD

源自正点原子视频教程: 【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式_哔哩哔哩_bilibili 一、OLED 二、内存保护(MPU)实验 2.1 内存保护单元 三、LCD 3.1 显示屏分类 3.2 LCD简介 3.3 LCD…...

在Linux中查找文件命令的几种方法

要在Linux中查找文件&#xff0c;可以使用以下几种不同的实现方法&#xff1a; 1. 使用find命令&#xff1a; find <搜索路径> <搜索选项> <搜索条件><搜索路径>&#xff1a;表示要搜索的起始路径&#xff0c;可以是一个具体的目录路径&#xff0c;也…...

【TB作品】MSP430F5529 单片机,温度控制系统,DS18B20,使用MSP430实现的智能温度控制系统

作品功能 这个智能温度控制系统基于MSP430单片机设计&#xff0c;能够实时监测环境温度并根据预设的温度报警值自动调节风扇和加热片的工作状态。主要功能包括&#xff1a; 实时显示当前温度。通过OLED屏幕显示温度报警值。通过按键设置温度报警值。实际温度超过报警值时&…...

立创小tips

立创小tips 原理图中 1-修改图纸属性 保存完&#xff0c;绘制原理图的界面就出现了&#xff0c;然后我们鼠标点击原理图的边缘变成红色就可以高边表格的属性了。 2-鼠标右键可以移动整个原理图 3-查看封装 点击任意一个元器件&#xff0c;在右侧就会显示封装属性&#xff…...

Html/HTML5常用标签的学习

课程目标 项目实战&#xff0c;肯定就需要静态网页。朝着做项目方式去学习静态网页。 01、编写第一个html工程结构化 cssjsimages/imgindex.html 归档存储和结构清晰就可以。 02、HTML标签分类 认知&#xff1a;标签为什么要分类&#xff0c;原因因为&#xff1a;分门别类…...

Tomcat 配置:一文掌握所有要点

引言 Apache Tomcat 是一个流行的开源 Java Servlet 容器和 Web 服务器&#xff0c;广泛用于开发和部署 Java Web 应用程序。正确配置 Tomcat 是确保其性能、安全性和稳定性的关键。本文将详细介绍 Tomcat 的各项配置&#xff0c;帮助您优化和管理 Tomcat 服务器。 一、Tomca…...

git 大文件上传失败 Please remove the file from history and try again.

根据提示执行命令 --- 查找到当前文件 git rev-list --objects --all | grep b24e74b34e7d482e2bc687e017c8ab28cd1d24b6git filter-branch --tree-filter rm -f 文件名 --tag-name-filter cat -- --all git push origin --tags --force git push origin --all --force...

骑砍2霸主MOD开发(14)-进击的巨人

一.巨人 sbyte boneIndex Skeleton.GetBoneIndexFromName(Mission.MainAgent.AgentVisuals.GetSkeleton().GetName(), "r_hand"); cp Mission.MainAgent.AgentVisuals.AddPrefabToAgentVisualBoneByRealBoneIndex("p_sword_a", boneIndex); float agent…...

Android 可拖拽的View,限制在父布局中随意拖拽;拖拽结束后可左右吸边;

实现方法一&#xff1a;自定义View 可随意拖动拖拽的View&#xff0c;限制拖动范围是父布局中&#xff1b; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.ViewGroup; …...

逐步更新动画混合参数(Blend)使其平滑地过渡到目标值

1.具体实现 逐步更新一个动画混合参数&#xff08;Blend&#xff09;&#xff0c;使其平滑地过渡到目标值&#xff0c;可以实现角色动作的平滑过渡&#xff0c;比如从走路过渡到跑步。 private float currentBleng;private float targetBlend;public float accelerSpeed 5;//…...

【多模态/CV】图像数据增强数据分析和处理

note 多模态大模型训练前&#xff0c;图片数据处理的常见操作&#xff1a;分辨率调整、网格畸变、水平翻转、分辨率调整、随机crop、换颜色、多张图片拼接、相似图片检测并去重等 一、分辨率调整 from PIL import Image def resize_image(original_image_path, save_image_p…...

代码随想录——修建二叉搜素树(Leetcode669)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …...

EasyExcel导出多个sheet封装

导出多个sheet 在需求中&#xff0c;会有需要导出多种sheet的情况&#xff0c;那么这里使用easyexcel进行整合 步骤 1、导入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><d…...

【Python错误】:AttributeError: ‘generator‘ object has no attribute ‘next‘解决办法

【Python错误】&#xff1a;AttributeError: ‘generator’ object has no attribute next’解决办法 在Python中&#xff0c;生成器是一种使用yield语句的特殊迭代器&#xff0c;它允许你在函数中产生一个值序列&#xff0c;而无需一次性创建并返回整个列表。然而&#xff0c;…...

如何配置Feign以实现服务调试

1、引入依赖 在项目中&#xff0c;需要引入Spring Cloud OpenFeign的依赖。这通常是通过在pom.xml文件中添加相应的Maven依赖来完成的。例如&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starte…...

pc之间的相互通信详解

如图&#xff0c;实现两台pc之间的相互通信 1.pc1和pc2之间如何进行通讯。 2.pc有mac和ip&#xff0c;首先pc1需要向sw1发送广播&#xff0c;sw1查询mac地址表&#xff0c;向router发送广播&#xff0c;router不接受广播&#xff0c;router的每个接口都有ip和mac&#xff0c;…...

Mongodb中字段的删除

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第61篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。 本篇文章&#xff0c;探讨UPDATE中的操作符$unset。Mongodb数据插入后&#xff0c;开发人员使用$u…...

TP8 PHP 动态变量调用 (new $class())->$action($data)

动态&#xff1a; $class \app\table\model\Log; $action DataSave; $data [...]; // 假设这是你要保存的数据//class_exists和method_exists的检查&#xff0c;这段代码能够在尝试实例化类或调用方法之前&#xff0c;先验证类是否存在以及该类中是否存在指定的方法。如果类…...

理解JVM内存模型与Java内存模型(JMM)

理解JVM内存模型与Java内存模型&#xff08;JMM&#xff09; 在Java程序的运行过程中&#xff0c;内存管理和线程的同步是两个重要的概念。本文将深入探讨JVM内存模型&#xff08;Java Virtual Machine Memory Model&#xff09;和JMM&#xff08;Java Memory Model&#xff0…...

鸿蒙OS初识

学习官网&#xff1a;https://www.harmonyos.com/cn/develop 准备 注册&#xff0c;安装软件&#xff08;node:12, DevEco Studio&#xff09;&#xff1a; https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415#ZH-CN_TOP…...

发布自己的 npm 插件包:步骤与最佳实践

在 Node.js 的生态系统中&#xff0c;npm&#xff08;Node Package Manager&#xff09;是一个不可或缺的组成部分。npm 允许开发者创建、共享和使用各种库和插件。如果你有自己的 Node.js 插件或库&#xff0c;并且希望与全世界的其他开发者共享&#xff0c;那么发布到 npm 是…...

BubbleML: A Multiphase Multiphysics Dataset and Benchmarks for Machine Learning

我们使用以下六个分类标准: 研究方法: 这个标准根据如何收集和分析数据来区分研究方法。 实验研究,如参考文献[64]中的研究,涉及在受控环境中研究人员操纵变量并观察结果的物理实验。这种方法对于收集真实世界的数据很有价值,但可能成本高且耗时。模拟研究利用计算模型来模…...

网站开发使用的软件/google搜索下载

随着SPA应用程序的普及&#xff0c;前端开发中对路由的操作越来越离不开了&#xff0c;目前基本上前端框架中的路由都是基于hash和history模式&#xff0c;在大量使用之余我们也理应该去窥探一下它他们的真面hashhash模式的原理其实非常简单&#xff0c;它提供了一个onhashchan…...

wordpress自定义文章添加标签/seo广州工作好吗

自建epel yum仓库并安装nginx1、创建 repo 文件2、yum repolist查看repolist3、安装 nginx4、验证 nginx 是否安装1、创建 repo 文件 [rootneo ~]# cat /etc/yum.repos.d/epel.repo [epel] nameepel repository baseurlhttps://epel.mirror.constant.com//7/x86_64/ gpgcheck0…...

虎丘网站建设/优化方案怎么写

JPA是什么 Java Persistence API:用于对象持久化的API Java EE 5.0平台标准的ORM规范&#xff0c;使得应用程序以统一的方式访问持久层。 JPA和Hibernate的关系 JPA是Hibernate的一个抽象&#xff08;就像JDBC和JDBC驱动的关系&#xff09;&#xff1a; 1&#xff09;JPA是规范…...

南昌高端网站定制/丁的老头seo博客

线程安全 定义:Doug Lea 大佬说过 如果多线程情况下使用这个类,无论多线程如何使用和调度这个类,这个类总是表示出正确的行为,这个类就是线程安全的。 类的线程安全表现为: 操作的原子性,类似数据库事务。内存的可见性,当前线程修改后其他线程立马可看到。不做正确的同…...

政府网站建设标准/国际新闻最新消息今天军事新闻

2019独角兽企业重金招聘Python工程师标准>>> 先啰嗦一点&#xff1a; 由于最近工作中&#xff0c;涉及到生产者消费者设计模式&#xff0c;对此有一些体会&#xff0c;所以总结一下&#xff0c;与大家分享。 1、什么是生产者消费者模式 在工作中&#xff0c;大家可能…...

社区门户网站建设招标公告/优化游戏卡顿的软件

实验要求&#xff1a;1.R6为ISP只能配置IP地址 2.R1/4/5为全连MGRE结构&#xff0c;R1/2/3为星型结构&#xff0c;R1为中心站点 3.所有私有网段可以互相通讯&#xff0c;私有网段使用OSPF协议 首先我们先进行IP地址的规划 和进行IP地址的配置 对R1: interface GigabitEthernet…...