当前位置: 首页 > 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) {* …...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...