Linux文件系统与日志

一、inode和block

文件数据包括元信息与实际数据,文件存储在硬盘上,硬盘最小存储单位是扇区,每个扇区存储512字节

1.block(块):文件系统中用于存储文件实际数据的最小单位,由文件系统进行分配和管理,并通过inode号中的指针关联到对应的文件,连续的八个扇区组成一个block,是文件存取的最小单位

2.inode(索引节点):用于标识和管理文件的唯一索引节点的标识符,用于存储文件的元信息

1.inode

Inode(索引节点)用于表示文件或目录的数据结构,每个inode有唯一的编号标识,文件系统使用这些编号来查找和访问文件,文件名和inode之间建立了映射关系,通过文件系统的目录结构可以将文件名与相应的inode关联起来,从而可以通过文件名来访问文件,当文件被删除时,只删除了与文件名相关联的inode,而文件的实际数据并没有立即被清除,只有当文件没有任何指向它的inode时,系统才会释放文件的存储空间。

2.inode表

元信息是每个文件的属性信息,比如:文件的大小、时间、类型、权限等,称为文件的元数据(meta data 元信息)。元数据是存放在inode(index node)表中,inode表由很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

inode表结构:

1.inode number文件的字节数

2.文件类型

3.文件的读、写、执行权限

4.文件拥有者的UID

5.文件的GID

6.链接数(指向这个文件名路径的名称个数)

7.该文件的大小和不同的时间戳

8.指向磁盘上文件的数据块指针

9.有关文件的其他数据

3.inode号

每个inode都有一个号,文件名和inode号是一一对应关系,操作系统用inode号码来识别不同的文件,inode号是是有限资源,如果消耗完毕,无法继续新建文件,解决方法就是删除空文件或无用文件。inode号是唯一的,在同一设备中是唯一的,在不同设备中inode号是可以相同的

用stst命令可以查看某个文件的inode信息(详细信息)

命令格式:inode  文件名

查看文件系统的inode号

命令格式:df  -i

查看某文件的inode号

命令格式:ls  -i  文件名

3.Linux系统文件三个主要文件的时间属性(三个时间戳)

atime:访问文件时间,需要打开文件时间才会发生变化

mtime:最近更改时间,文件内容发生改变,时间才会变化

ctime:最近改动时间,文件的元信息发生改变,时间才会改动,时间权限包括属主属组大小

注:只有用vim打开此文件才会更新此文件的最近访问时间

注:在使用find找文件时间时建议使用mtime

4.目录文件结构

inode号不包含文件名,文件名是存放在目录当中的,Linux系统中一切皆文件,因此目录也是一种文件,目录文件的结构就是目录项的列表,每个目录项由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码

查看目录下所有文件的inode号

命令格式:ls -i  目录(绝对路径)

二、日志*

内核及系统日志由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf,linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log下。

1.日志的功能

1.用于记录系统、程序运行中发生的各种事件 

2.通过阅读日志,有助于诊断和解决系统故障

2.日志分类

1.内核系统日志:

由系统服务rsyslog统一进行管理,日志格式基本相似,记录了操作系统做了什么事,发生了什么故障

2.用户日志:

记录系统用户登录及退出系统的相关信息

3.程序日志:

由各种应用程序独立管理的日志文件,记录格式不统一,记录了某一程序做了什么事,发生了什么故障

3.日志默认保存的位置

默认位于:/var/log目录下,如果想改变日志位置,需要用到rsyslog软件

1.日常的日志记录(内核和公共日志)

核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态信息,I/O错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出

日志命令作用
btmplastb查看登录失败的用户
lastloglastlog查看用户最后一次登录的情况
wtmplast用户成功登录的日志

文件位置:/var/log/message

文件格式:文本文件

作用:系统中大部分的信息

2.系统安全的日志

文件位置:/var/log/secure

文件格式:文本文件

作用:系统安全日志,比如登陆失败等信息会记录下来

3.登录失败的日志

文件位置:/var/log/btmp

文件格式:二进制无法直接查看

作用:登录失败日志

lastb:查看登陆失败的用户

4.记录用户最后一次登录日志

文件位置:/var/log/lastlog

文件格式:非文本

lastlog:查看用户最后一次登录的情况

5.目前用户成功登录日志

文件位置:/var/log/wtmp

文件格式:非文本

last:查看用户成功登录的日志(wtmp)

last |tail:查询成功登录到系统的用户记录,只显示最后十行

6.记录硬件信息日志

文件位置:/var/log/dmesg

文件格式:文本

作用:记录硬件信息日志

7.记录系统启动服务

文件位置:/var/log/boot.log

文件格式:文本

作用:系统服务启动的相关信息

用vim打开查看相关信息

8.记录安装系统的相关信息

文件位置:/var/log/anaconda:anaconda

文件格式:文本

作用:安装系统时的相关信息

9.计划任务的日志

文件位置:/var/log/cron

作用:记录与系统定时任务相关的日志

10.查询当前登录用户

users:仅显示登录的用户名

w:显示当前系统上登录的用户以及活动情况

USER:登录的用户名

TTY:用户当前所使用的终端

FROM:登录用户的IP地址或主机名

LOGIN@:登陆时间

IDIE:用户在终端处于空闲状态的时间

JCPU:用户所有进程的累计CPU时间

PCPU:当前正在运行的进程的CPU时间

WHAT:用户正在做的事情(命令或程序的简短描述)

who:当前登陆用户的信息(包括用户名、登录终端和登陆时间等)

4.系统日志管理rsyslog

1.日志优先级/级别:描述了事件的严重程度

根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要)

级号消息级别说明
0EMERG紧急会导致主机不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

2.rsyslog特性

1.多线程

2.UDP,TCP,SSL,TLS,RELP

3.MySQL,PGSQL,Oracle实现日志存储

4.强大的过滤器,可实现过滤记录日志信息中任意部分

5.自定义输出格式,可以日志

6.适用于企业级

3.rsyslog配置文件

配置文件/etc/rsyslog.conf由3个模块组成

1.MODULES相关配置模块

只有安装了功能模块,才会有相关的模块配置

2.GLOBAL  DIRECTIVES全局配置模块

全局配置没有局部配置的优先级高,只有在没有局部配置时,才会使用全局配置

3.RULES局部配置

3.sysklogd系统日志服务

CentOS5之前版本采用的日志管理系统服务

1.syslogd(system application):记录应用日志

2.klogd(Linux kernel):记录内核日志

5.ELK日志

ELK(Elasticsearch,Logstash,Kibana)由三个软件组成

1.Elasticsearch:开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能

2.Logstash:对日志进行收集、分析、过滤,并将其存储供以后使用

3.kibana:可以提供的日志分析友好的Web界面

4.kafka:消息队列

6.logrorate分割日志文件

日志是需要进行分割的

1.写脚本,制定crontab计划任务每天执行

2.logrorate centos7

三、实操实验

1.实验的两个目的

1.有些软件程序是没有单独的日志服务,我们可以利用rsyslog软件给一些重要的程序生成独立的日志文件,把ssh远程登录程序的日志独立出来,ssh软件默认的日志在/var/log/secure,是很多程序一起使用的,并不是独立的。

2.搭建日志服务器

配置文件中的rules

通式:服务程序.记录的日志级别(sshd.error)日志文件的位置应该使用绝对路径

2.rsyslog实例1(设置ssh的单独日志)

目的:单独显示某一服务器的日志,以ssh服务为例

1.编辑rsyslog配置文件

vim /etc/rsyslog.conf

2.添加的内容

local6:日志源              *:表示任意级别             /var/log/nssh.log:新的日志路径

3.编辑ssh服务的配置文件/etc/ssh/sshd_config,改变日志路径

vim /etc/ssh/sshd_config

4.在32行添加自定义切换日志源为local6

SyslogFacility LOCAL6

5.重启服务

systemctl restart rsyslog.service sshd

6.远程连接其他主机

这里看到生成了一个登录信息的日志,显示最后一次登录的基础信息

7.查看ssh服务的日志是否独立列出

cat /var/log/nssh.log

2.rsyslog实例2(创建一个专门的日志服务器)

目的:将远程主机的日志备份到本机,现有esdeath、eva和es三台主机,现将es作为日志服务器用于记录esdeath和eva的日志存储

1.关闭防火墙

2.打开es的rsyslog的配置文件并加载es的rsyslog的ICMP和TCP模块

3.这里可以看到在提供TCP syslog接收功能中的两个模块开头有#号,说明是注释状态,并没有被开启,我们把#号去掉以开启此模块

$ModLoad imtcp:加载rsyslog的imtcp模块,imtcp模块用于接收通过TCP协议发送的日志消息

$InputTCPServerRun 514:用于启动rsyslog的TCP服务器模式,监听TCP端口514以接收日志消息

4.去掉注释状态,wq保存

5.重启使模块生效

systemctl restart rsyslog.service

6.查看514端口是否被开启

ss -ntap |grep 514

7.修改主机esdeath和eva的rsyslog配置文件,两个主机配置一样,这里只拿一个主机做演示

打开/etc/rsyslog.conf编辑配置

8.将TCP下的两个模块退出注释状态并wq保存退出

9.添加日志服务器的IP地址

*.info;mail.none;authpriv.none;cron.none      @@192.168.7.132(这里的IP地址选择日志服务器的IP地址)

10.重启使之生效

systemctl restart rsyslog.service

11.关闭防火墙

systemctl stop filewalld.service

12.观察主机es能否收到主机esdeath和eva的消息,主机esdeath和主机eva使用logger命令模拟日志

13.用tail -f  -n2  /var/log/messages:实时追踪消息日志的最后两行,收到了主机esdeath和主机eva的测试日志

四、日志管理工具journalctl

1.journalctl日志的配置文件

/etc/systemd/journald.conf

2.journalctl命令格式与选项

命令格式:journalctl   选项

选项

功能

journalctl查看所有日志(默认情况下,只保存本次启动的日志)
journalctl  -x提示信息
journalctl  -e显示到末尾
journalctl  --no-pager分页,显示全自动换行
journalctl  -k查看内核日志(不显示应用日志)
journalctl  -b  -0查看系统本次启动的日志
journacltl  -b  -1查看上一次启动的日志(需更改设置)
journacltl  -n显示尾部的最新10行日志
journacltl  -n  数字显示尾部指定行数的日志
journalctl  -f实时滚动显示最新日志
journalctl  绝对路径查看指定服务的日志
journalctl  _PID=1查看某个路径的脚本的日志
journalctl  --disk-usage显示日志占据的硬盘空间
journalctl  --vacuum-size=1G指定日志文件占据的最大空间
journalctl  --vacuum-time=1years指定日志文件保存多久

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电子通识】什么是8D分析法?8D步骤及用法?

在问题分析时往往会听到8D报告这样的词汇。如在电源专题【电源专题】案例:电源芯片厂家怎么判断电源芯片端口是否损坏中我们使用的图片就来源于电源芯片厂家的8D报告。 什么是8D分析法? 8D问题分析由美国国防部于1974年创立,当时用于军用物资采购保障。目前在汽车产业、组装…

MapReduce案例-电影网站数据统计分析

本文适合大数据初学者学习MapReduce统计分析业务问题的步骤和基础的MapReduce编程方法,初步掌握Hadoop对计算任务的管理。 本文末尾有全部数据集和完整代码连接。 1.准备工作 安装Hadoop:Hadoop 3.3.2 离线安装-CSDN博客 按照好Hadoop之后要检查一下datanode运行情况…

在控制台实现贪吃蛇

在控制台实现贪吃蛇 前备知识Win32APICOORD这个结构体的声明如下:GetStdHandle 函数GetConsoleCursorInfo 函数SetConsoleCursorInfo 函数 SetConsoleCursorPosition 函数getAsyncKeyState 函数 控制台窗口的大小以及字符打印介绍控制台中的坐标宽字符及本地化介绍s…

SRS服务接入华为云CDN

CDN简介: CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网…

SSH远程连接docker容器-Linux-SSH -L 打隧道

问题:在物理机上用podman创建了一个容器,想SSH直接远程连接docker容器 解决方式: 步骤1: 在本地terminal输入以下命令: ssh -L 容器端口号:localhost:容器端口号 物理机用户名物理机ip -p 物理机端口号 即可,可新打…

centos7+mysql57安装以及初始化

1、下载安装yum官方mysql源: http://repo.mysql.com/ ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/061472a86e9e4548b76d4603d4614568.png rpm -ivh mysql57-community-release-el7.rpm2、yum安装mysql服务 yum install -y mysql-community-server…

423 世界读书日 和京东零售技术人一起读好书

我们正处于一个复杂、变化的世界,想要更好地理解、适应它,读书可能是最方便的方式之一。 4 月 23 日世界读书日,我们整理了 10 位零售技术人的书籍推荐给大家,欢迎大家一起来共读好书。愿大家在忙碌工作之余,都能够持…

从0到1实现RPC | 接入Apollo配置中心

一、代码实现 添加依赖 添加apollo客户端的依赖和spring配置相关依赖 添加监听器 通过实现ApplicationContextAware接口,获取Spring上下文。 使用ApolloConfigChangeListener注解监听命名空间rpc-demo-provider.yaml和默认的application.properties。 监听逻辑…

开源大模型王者归来:llama3最大4000亿参数,性能GPT4相当,超越Grok3140亿且全开源代码

llama3&Grok 目前开源的超级大模型有Gork和Llama3 https://github.com/xai-org/grok-1;该模型称为史上最大开源LLM,参数高达3140亿!马斯克如约开源Grok,10小时狂揽10000颗Star,搞笑的是这个模型只开源了推理没有训…

17.Nacos与Eureka区别

Nacos会将服务的提供者分为临时实例和非临时实例。默认为临时实例。 临时实例跟eureka一样,会向注册中心报告心跳监测自己是否还活着。如果不正常了nacos会剔除临时实例。(捡来的孩子) 非临时实例,nacos会主动询问服务提供者是否…

古董展新风尚:山海鲸数据大屏引领科技潮流

在数字化浪潮的推动下,传统文化与现代科技正日益融合,展现出独特的魅力。近日,山海鲸推出了一款古董展览数据可视化大屏,将古董藏品的丰富内涵以直观、生动的形式呈现在观众面前,让人们在欣赏古董之美的同时&#xff0…

深入探索GDB:Linux下强大的调试神器

目录 一、GDB简介:源码级调试的基石 二、GDB基础操作:从入门到熟练 启动与基本命令 三、GDB进阶功能:解锁更深层次的调试能力 1. 回溯追踪:洞察调用栈 2. 动态内存检测:揪出内存问题 3. 条件断点与观察点&#…

制氢机远程监控运维方案

制氢机远程监控运维方案 在当今能源转型的大背景下,氢能作为清洁、高效且可再生的能源载体,其重要性日益凸显。而制氢机作为氢能产业链中的关键设备,其稳定运行与高效运维对于保障氢气供应、推动氢能产业健康发展至关重要。在此背景下&#…

基于Linux系统命令行安装KingbaseES数据库

人大金仓通用性数据库(Kingbase)下载网址:人大金仓-成为世界卓越的数据库产品与服务提供商 选择“软件版本-数据库”,筛选条件Linux、完整版。找到需要的版本,点击下载。我下载的是KingbaseES_V008R006C008B0014_Lin6…

实现Spring底层机制(二)

文章目录 阶段2—封装bean定义信息到Map1.代码框架图2.代码实现1.文件目录2.新增注解Scope存储单例或多例信息Scope.java3.修改MonsterService.java指定多例注解4.新增bean定义对象存储bean定义信息BeanDefinition.java5.修改pom.xml增加依赖6.修改容器实现bean定义信息扫描Sun…

nginx开启basic认证

basic认证也叫做http基本认证,防止恶意访问 首先用在线网站生成一个叫做htpasswd的账号密码文件。 将生成结果复制到/etc/nginx/htpasswd文件中 在server的location中配置 server { listen 80; server_name a.com;location / { root html;index index.…

springcloud alibaba 整合seata的TCC

一、seata服务端搭建同上篇。 Seata的AT模式客户端两阶段提交流程源码分析 二、seata客户端的结构 1.示例DEMO工程 下单,扣余额, 减库存。 2. MAVEN配置。 父工程:由于spring-cloud-starter-alibaba-seata依赖的seata-spring-boot-starter…

顺序栈着三种结构定义及其初始化

定义 顺序堆栈这三种结构定义及其初始化 - 知乎 (zhihu.com) 根据以上链接得到: 1.理解为数组,top是这个数组的索引值;定义这个结构体类型时,系统不分配空间 在主函数声明时,定义了关于这个结构体的变量&#xff0c…

Java 【数据结构】 二叉树(Binary_Tree)【神装】

登神长阶 第五神装 二叉树 Binary-Tree 目录 🎷一.树形结构 🪗1.概念 🎸2.具体应用 🎹 二.二叉树(Binary Tree) 🎺1.概念 🎻2.表现形式 🪕3.特殊类型 &#x1f941…

自己手动在Linux上实现一个简易的端口扫描器

背景 常常听到网络攻击有一个东西叫做端口扫描器,可以扫描指定服务器开放的端口,然后尝试连接,并寻找漏洞,最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序,看上去很厉害的样子。而实际上这些东西对于懂…