23、linux系统文件和日志分析
linux文件系统与日志分析
文件时存储在硬盘上的,硬盘上的最小存储单位是扇区,每个扇区大大小是512字节。
inode:元信息(文件的属性 权限,创建者,创建日期等)
block:块,连续的八个扇区组成一个块,一个块的大小是4k,创建一个文件,最小也要占4k。
块是文件存储的最小存储单位。
操作系统读取硬盘,是一次性读取多个扇区一个一个块读取数据。
创建文件:实际空间大小的要占,第二个就是元信息。元信息和实际数据都保存在硬盘上。
元信息,inode 128字节或者256字节。
一个文件必须占用一个inode号(只要创建文件必须有一个inode号)
至少占用一个block(空文件,也要占一个块)
时间戳:
atime:访问,读取文件就会更新这个时间。
mtime:修改文件数据,更改文件的属性,都会更新这个时间。
ctime:修改文件权限也会更新这个时间。
inode号:linux系统都是识别文件的inode号
修改文件内容,硬盘中的位置发生变化,inode号也会发生变化。vim
[root@localhost opt]# ls -i
33624704 123 33965422 nginx-1.22.0
33624702 john-1.8.0.tar.gz 33618581 nginx-1.22.0.tar.gz
33624944 login.sh
[root@localhost opt]# vim 123
[root@localhost opt]# ls -i
33624708 123 33965422 nginx-1.22.0
33624702 john-1.8.0.tar.gz 33618581 nginx-1.22.0.tar.gz
33624944 login.sh
元信息发送了变化,inode也会发送变化
inode号的总数?df -i
磁盘大小。磁盘越大,inode越多,越小,inode越小。
inode号和文件名分离,二者只是映射关系,linux系统的特有现象:
1、文件名包含特殊字符,rm可能无法正常删除,可以直接删除inode号。
2、移动文件,重命名,inode是不变的。
3、一旦对文件操作,后续所有的认证和识别都是通过inode来的,不再考虑文件名。
4、元信息发送变化,inode也会发生变化。
xfs文件系统,如何能够实现备份和恢复?(必会)
centos7默认使用文件系统就是xfs
xfsfump备份
xfsrestore恢复
xfsdump命令选项:
-f 指定需要备份的文件目录(设备挂载点)/指定备份硬盘分区
-L 指定标签
-M 指定设备标签
-s 备份单个文件,-s 后面不能之间根路径。
xfsdump使用限制:
1、只能备份xfs的文件系统
2、只能备份以及挂载的文件系统
3、只有root权限才能进行操作
4、备份之后的数据要恢复,只能使用xfsrestore解析恢复。
5、如果两个设备的uuid相同,不能备份。
备份完之后,恢复文件,inode号是否会发送变化
1、建立sdb1物理卷,已经创建文件系统及挂载点sdb1,进入挂载目录/data1,写入需要备份的文件,写入后进行备份
xfsdump -f(指定需要备份的文件目录(设备挂载点)/指定备份硬盘分区) /opt/backup /dev/sdb1 [-L backup -M sdb1]
2、进入/data1,删除需要备份文件
[root@localhost data1]# ls
123
[root@localhost data1]# rm -rf *
3、备份恢复
[root@localhost data1]# xfsrestore -f /opt/backup /data1/
[root@localhost data1]# ls
123
/opt/backup 必须是个文件,必须是个不存在的文件,不能是目录,如果已存在,必须是个空文件。
/dev/sdb2 设备
[-L 文件标签(备份文件的标签) ]
[-M 设备标签(要备份的硬盘分区)]
备份级别:全量备份和增量备份
0也是备份 也就是全量备份
1-9是增量备份,一般不用。
xfsrestore -f /opt/backup /data1/
前一个是备份的文件
后一个是恢复到指定的目录
EXT类型备份和恢复:
ext4只能在centos6
ext3格式
extundelet
日志分析:
系统的日志类型以及日志如何分析
linux系统本身的日志和大部分的服务器程序的日志都在/var/log/
/var/log/messages 记录了linux的内核消息,各种应用程序的公共的日志消息。
应用程序公共日志:开 关 重启 网络错误 程序故障这些都属于公共日志
访问日志和一些自由业务日志不包含在其中。
cron:记录的是定时任务的日志
dmesg:引导过程的日志信息
maillog:记录进入或者发出的系统电子邮件信息
secure:用户认证的相关信息
rsyslog
linux的日志消息级别
linux的日志级别:数字越小,优先级越高,消息越重要
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况,系统崩溃。磁盘要满了(EMERG) |
1 | ALERT | 警告 | 必须要采取措施解决的问题。密码到期,数据库奔溃。 |
2 | CRIT | 严重 | 比较严重的情况,磁盘读写出了故障,有些程序的功能无法启动。 |
3 | ERR | 错误 | 运行出现错误,程序启动失败,端口被占用等等,间的最多的情况,出现最多的,出现了也是要尽快解决的 |
4 | WARNING | 提醒 | 可能会影响功能,需要提醒用户的重要时间,但不是报错。磁盘利用率到了85% |
5 | NOTICE | 注意 | 也是需要用户注意的,无需处理 |
6 | INFO | 信息 | 一般信息,系统或者应用程序在工作中产生的正常消息 |
7 | DEBUG | 调试 | 程序在开发阶段,调试程序时的信息 |
none | 没有优先级 | 不记录任何日志消息 |
*.info 表示所有,表示系统中的设备,或者程序。info:包含info以及info级别以上的日志。
auth 用户认证产生的日志
daemon 守护后台进程的进程
authpriv:SSh,FTP登录验证的信息
news:网络传输产生的信息
syslog:系统的相关日志
kern:系统的内核日志
user:用户进程日志
local-local7:自定义程序
uucp:unix-to-unix copy两个linux之间的通信
mail.info /var/log/mail.log:记录邮件的信息,包含info及info以上的,记录到/var/log/mail.log
mail.=info /ar/log/mail.l0g 只记录日志级别是info的
mail.!info /var/log/mail.10g 除了info的不记录,其他的都记
mail.info;news.info=mail,news.info
日志信息翻译
May 31 13:46:02 test1 systemd: starting The Apache HTTP server…
May 31 13:46:02 表示当前日志发生的时间
test1表示发生的主机名
systemd:哪个系统产生了这个日志
starting The Apache HTTP server…日志的具体内容
第一个实验:ssh的日志单独列出来
1、test1、test2关防火墙、安全机制
[root@test1 opt]# systemctl stop firewalld ##关闭防火墙
[root@test1 opt]# setenforce 0 ##关闭安全机制[root@test2 ~]# systemctl stop firewalld
[root@test2 ~]# setenforce 0
2、打开系统日志,单独列出ssh日志
[root@test1 opt]# vim /etc/rsyslog.conf
local7.* /var/log/boot.log
到74行,local6.* /var/log/ssh.log
3、把默认ssh日志存储位置注释
[root@test1 opt]# vim /etc/ssh/sshd_config
32gg行 32 #SyslogFacility AUTHPRIV 进行注释##
33行写入 33 SyslogFacility LOCAL6 更改日志位置
4、服务刷新
[root@test1 opt]# systemctl restart rsyslog.service[root@test1 opt]# systemctl restart sshd[root@test1 opt]# cd /var/log/
[root@test1 log]# lsanaconda maillog spooler-20240519
audit maillog-20240519 spooler-20240531
boot.log maillog-20240531 ssh.log
5、查找 ssh.log日志
[root@test1 log]# tail -f ssh.log[root@test2 ~]# ssh root@192.168.168.10Are you sure you want to continue connecting (yes/no)? yesroot@192.168.168.10's password: 123May 31 23:20:12 test1 sshd[48095]: Accepted password for root from 192.168.168.20 port 44206 ssh2
第二个实验:
配置日志服务器,来进行日志收集
test1 192.168168.10 日志收集服务器
test2 192.168.168.20上产生的的日志,都会发到10上,20自己不再记录日志
1、test2进入系统日志配置文件,之前一定关闭防火墙和安全机制
[root@test2 ~]# vim /etc/rsyslog.conf#*.info;mail.none;authpriv.none;cron.none /var/log/messages #注释这一行*.info;mail.none;authpriv.none;cron.none @@192.168.168.10 ##日志存储改到192.168.168.10$ModLoad imudp ##@@是tcp传输端口打开
$UDPServerRun 514
2、文件配置完成,刷新。
[root@test2 ~]# systemctl restart rsyslog.service
3、test1日志配置,打开tcp端口514传输
[root@test1 ~]# vim /etc/rsyslog.conf*.info;mail.none;authpriv.none;cron.none /var/log/messages ##不用改Provides TCP syslog reception$ModLoad imtcp ##关闭注释,打开端口
$InputTCPServerRun 514 ##关闭注释,打开端口[root@test1 ~]# systemctl restart rsyslog.service
[root@test1 ~]# systemctl stop firewalld
[root@test1 ~]# setenforce 0
[root@test1 ~]# tail -f /var/log/messages
4、到test2,输入[root@test2 ~]# logger “this is xy102”
5、test1,出现日志Jun 1 12:42:46 test2 root: this is xy102
6、test2,不会出现日志。
@@表示使用tcp协议进行数据传输
@表示使用udp协议进行数据传输
LISTEN:监听,端口是否开启。端口是否正常传输数据
eatablished:表示端口之间以及建立连接而且正在传输数据。
文件系统:对文件的操作,用户时针对文件名,系统针对的inode好哦,系统都是inode来进行识别。
inode号保存的是元信息,大小,时间戳。
block块 文件的最小存储单位,连续的8个扇区,4k。
创建文件:保存云信息,保存实际数据。
备份个恢复:XFS ext3
*问题:**xfs模拟耗尽inode,能不能写入,若能写入,写入多少。如果inode号满了,ext4和xfs之间有什么区别?***
1、增加硬盘、物理卷分区,创建文件系统,挂载。
2、查看inode号
3、创建10237个文件
4、继续新建到10300个
5、继续新建到10400个
总结:1、ext4创建inode号,inode满了以后,不能继续创建inode号。
2、xfs创建文件,消耗inode号,inode号满了以后,可以继续创建inode号,df -i显示可用inode号个数10237,最终消耗10365个inode号。
g-OPyXW2tN-1717227770016)]
2、查看inode号
[外链图片转存中…(img-EPsaF42u-1717227770016)]
3、创建10237个文件
[外链图片转存中…(img-DtMaf1D1-1717227770016)]
4、继续新建到10300个
[外链图片转存中…(img-sSvDPy9Q-1717227770016)]
5、继续新建到10400个
[外链图片转存中…(img-k0TkGW5f-1717227770016)]
总结:1、ext4创建inode号,inode满了以后,不能继续创建inode号。
2、xfs创建文件,消耗inode号,inode号满了以后,可以继续创建inode号,df -i显示可用inode号个数10237,最终消耗10365个inode号。
相关文章:

23、linux系统文件和日志分析
linux文件系统与日志分析 文件时存储在硬盘上的,硬盘上的最小存储单位是扇区,每个扇区大大小是512字节。 inode:元信息(文件的属性 权限,创建者,创建日期等) block:块,…...

安装VS2017后,离线安装Debugging Tools for Windows(QT5.9.2使用MSVC2017 64bit编译器)
1、背景 安装VS2017后,Windows Software Development Kit - Windows 10.0.17763.132的Debugging Tools for Windows默认不会安装,如下图。这时在QT5.9.2无法使用MSVC2017 64bit编译器。 2、在线安装 如果在线安装参考之前的文章: Qt5.9.2初…...

路由策略实验2
对R7,重发布直连路由 对R2,做双向 对R3同样 先不改优先级 查看,知道所有给R3的路由为151,全部为OSPF。 知道了是错误的,先把3,4之间的线路断掉 接着对R3,让优先级全部回到100(displa…...

Linux网络-守护进程版字典翻译服务器
文章目录 前言一、pid_t setsid(void);二、守护进程翻译字典服务器(守护线程版)效果图 前言 根据上章所讲的后台进程组和session会话,我们知道如果可以将一个进程放入一个独立的session,可以一定程度上守护该进程。 一、pid_t se…...
Python 推导式详解:高效简洁的数据处理技巧
推导式是 Python 提供的一种简洁而强大的语法,用于创建列表、集合和字典。它可以让代码更简洁、更易读,同时提高运行效率。 基本语法 列表推导式 基本语法: [expression for item in iterable if condition]示例: # 生成平方…...

车联网安全入门——ICSim模拟器使用
文章目录 车联网安全入门——ISCim模拟器使用介绍主要特点:使用场景: 安装使用捕获can流量candumpcansnifferwiresharkSavvyCAN主要特点:使用场景: 重放can报文cansendSavvyCAN 总结 车联网安全入门——ISCim模拟器使用 …...

leetcode - 20.有效的括号(LinkedHashMap)
leetcode题目有效的括号,分类是easy,但是博主前前后后提交了几十次才通过,现在记录一下使用Java语言的写法。 题目链接: 20.有效的括号 题目描述: 给定一个只包括 (,),{,},[&…...
多维数组的动态内存分配(malloc和new)
一.区别指针类型 动态分配二维数组的内存不要赋值给行指针,而要赋值给二级指针。 二.分配动态二维数组的方法 1.使用指针数组 然后对指针数组的每一个元素分别malloc一维数组 2.直接使用malloc // 分配了一个指针数组,row为二维数组行数 int **p (i…...

71、评测OrangePi AIpro开发板和USB CAMERAOAK视频解码+推理+编码+推流测试
基本思想:csdn赞助了OrangePi AIpro开发板,花点时间简单和oak深度相机绑定测试一下,反正之前玩过atlas 200 dk A2,应该差不多,引用了之前的usb相机,方便小伙伴测试使用 第一步:系统刷机,参考官方吧,懒得刷机了,参考官方手册即可链接:https://pan.baidu.com/s/1umXM3i…...
为什么需要开局调用函数?
初始化操作:在你的应用程序启动时,可能需要执行一些初始化操作,例如设置默认值、加载配置、建立数据库连接等。开局调用函数可以帮助你集中管理这些操作,确保它们在应用程序启动时顺利执行。 统一入口:通过一个统一的…...

QT-demo:0轴分布图表
版本:5.9 第一种: 使用 PyQt5 和 Matplotlib 库 安装所需的库: pip install PyQt5 matplotlib创建和显示图表: import sys import numpy as np import matplotlib.pyplot as plt from PyQt5.QtWidgets import QApplication, QMainWindow f…...

git远程仓库限额的解决方法——大文件瘦身
Git作为世界上最优秀的分布式版本控制工具,也是优秀的文件管理工具,它赋予了项目成员对项目进行远程协同开发能力,因此受到越来越多的行业从业人员的喜爱。很多优秀的项目管理平台,比如国内的Gitee,国外的Github&#…...

碰撞检测技术在AI中的重要作用
引言: 随着人工智能技术的不断发展,AI已经渗透到我们生活的方方面面。在游戏、机器人、虚拟现实等领域中,碰撞检测技术扮演着至关重要的角色。本文将探讨碰撞检测技术在AI中的作用,以及如何利用这项技术来改善AI系统的性能和用户体…...

UE5 Cesium2 最新使用地理配准子关卡构造全球场景
参考官方最新教程:Building Global Scenes with Georeferenced Sublevels – Cesium 创建持久关卡(主关卡) 这里一般包含DynamicPawn、CesiumSunSky 和 Cesium World Terrain 全球场景通用的对象。子关卡的创立,官方教程分为了两…...

【Java数据结构】详解LinkedList与链表(二)
目录 1.❤️❤️前言~🥳🎉🎉🎉 2.反转一个单链表 3. 找到链表的中间节点 4.输入一个链表,输出该链表中倒数第k个结点。 5.合并两个有序链表 6.链表分割 7. 判定链表的回文结构 8.输入两个链表,找…...

【精读文献】J. Environ. Manage.|青藏高原生态恢复项目下植被覆盖动态及其对生态系统服务的约束效应
目录 文章简介 01 文章摘要 02 研究背景、目标及创新点 2.1 研究背景 2.2 研究现状 03 研究区域与数据集 3.1 研究区域 3.2 研究数据 04 研究方法 4.1 趋势分析 4.2 残差趋势分析 4.3 偏相关 4.4 生态系统服务评价 4.5 约束线的定义和提取 05 研究结果 5.1 植被…...

QT之常用控件
一个图形化界面当然需要有各种各样的控件,QT也不例外,在QT designer中就有提供各种各样的控件,用以开发图形化界面。 而想使用好一个QT控件,就需要了解这些控件。 QWidget 在QT中,所有控件都继承自 QWidget 类&…...

【嵌入式硬件】DRV8874电机驱动
目录 1 芯片介绍 1.1 特性简介 1.2 引脚配置 1.3 最佳运行条件 2 详细说明 2.1 PMODE配置控制模式 2.1.1 PH/EN 控制模式 2.1.2 PWM 控制模式 2.1.3 独立半桥控制模式 2.2 电流感测和调节 2.2.1 IPROPI电流感测 2.2.2 IMODE电流调节 3.应用 3.1设计要求 3.2 设计…...

考研数学:有些无穷小不能用等价无穷小的公式?
今天要给大家分享的笔记是:《有些无穷小虽然是无穷小,但却不能用无穷小的相关公式》:...

谷歌浏览器的平替,内置开挂神器,我已爱不释手!
油猴浏览器正式版是一款基于谷歌Chromium源码开发的浏览器,它集成了集成了强大的油猴扩展(Tampermonkey),使得用户可以轻松安装各种脚本,从而增强网页浏览体验。提供了一个更加个性化和高效的浏览体验。 油猴扩展&…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...