Linux之文件系统与日志分析

文件系统稍微了解
日志分析重点,解决问题的唯一手段,遇到问题第第一想到去看日志
apache nginx 遇到问题看返回码 404 500等

一、inode和block

1.1inode和block概述

  • 文件数据包含元信息和实际数据

  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

  • block

    • 连续8个扇区组成一个block (512*8=4096 4k)

    • 文件存取的最小单位

  • inode(索引节点)

    • 索引节点也叫i节点

    • 存储文件元信息

一个文件必须占用一个inode,但至少占用一个block

1.2inode的内容

  • inode包含文件的元信息

    • 文件的字节数

    • 文件拥有者的User ID

    • 文件的Group ID

    • 文件的读、 写、执行权限

    • 文件的时间戳

    • 文件类型

    • 链接数

    • 有关文件的其他数据

  • 用stat命令可以查看某个文件的inode信息

[root@localhost ~]#ls -i
[root@localhost ~]#stat [文件]

  • Linux系统文件三个主要时间属性
    • ctime(change time)
      • 最后一次改变文件或目录(属性)的时间
    • atime(access time)
      • 最后一次访问文件或目录的时间
    • mtime(modify time)
      • 最后一次修改文件或目录(内容)的时间

  • 在同一设备下 inode是不可以相同的,不同设备下是可以相同的

  • inode的号码

    • 系统找到这个文件对应的inode号码
    • 通过inode号,获取inode信息
    • 根据node信息,找到文件数据所在的block,读出数据

cp 和 inode:

  • 分配一个空闲的inode号,在inode表中生成新条目

  • 在目录中创建一个目录项,将名称与inode编号关联

  • 拷贝数据生成新的文件

rm 和 inode:

  • 硬链接数递减,从而释放的inode号可以被重用

  • 把数据块放在空闲列表中

  • 删除目录项

  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode:

  • 如果mv命令的目标和源在同一设备,

    不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

    删除旧的目录对应关系新建目录对应关系

  • 通过indoe号删除rm 常规方法删除不掉的文件

find 文件路径 -inum inode号 -delete
find 文件路径 -inum inode号 -exec rm -rf {} \;

1.3硬链接与软连接

ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
对比项 硬连接 软连接
本质 本质是同一个文件 本质不是同一个文件
inode 相同 不同
连接数 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 删除新建不会改变
文件夹 不支持 支持
删除源文件 只是链接数减一,但链接文件的访问不受影响 无法访问连接文件
文件类型 和源文件相同 链接文件,和源文件无关
文件大小 和源文件相同 源文件的路径的长度

二、分析日志文件

内核及系统日志由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf

Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/

2.1日志的功能

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

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

2.1日志的分类

  • 内核及系统日志

    • 由系统服务rsyslog统一将进行管理,日志格式基本相似
  • 用户日志

    • 记录系统用户登陆及退出系统的相关信息
  • 程序日志

    • 由各种应用程序独立管理的日志文件,记录格式不统一

2.3日志保存位置

  • 默认位于:/var/log目录下

2.4主要日志文件介绍

日志 文件位置 日志文件说明
内核和公共日志 /var/log/messages 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出。
计划任务日志 /var/log/cron 记录与系统定时任务相关的曰志
系统引导日志 /var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
邮件日志 /var/log/maillog 记录邮件信息的曰志
用户日志 /var/log/lastlog 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
用户验证授权日志 /var/log/secure 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
用户记录所有失败登录信息日志 /var/log/btmp 当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
用户登录注销和系统开机相关日志 /var/log/wtmp 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
当前登录用户信息日志 /var/tun/ulm 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用 vi 查看,而要使用w、who、users等命令查看。
anaconda日志 /var/log/anaconda 操作系统安装时安装的软件信息
启动信息日志 /var/log/boot.log 系统服务启动的相关信息,文本格式

2.5用户日志

在 wtmp、btmp、lastlog 等日志文件中,保存了系统用户登录、退出等相关的事件消息。

但是这些文件都是二进制的数据文件,不能直接使用 tail、less 等文本查看工具进行浏览,

需要使用 who、w、users、last 和 lastb 等用户查询命令来获取日志信息。

2.5.1查询当前登录的用户情况

  • users简单地输出当前登录的用户名称

  • who命令用于报告当前登录到系统中的每个用户的信息

  • w用于显示当前系统中的每个用户及其所运行的进程信息

2.5.1查询用户登录的历史记录

  • last
    用于查询成功登录到系统的用户记录

  • lastb
    用于查询登录失败的用户记录

  • lastlog
    查看登陆过当前系统用户的最近一次登陆时间

2.6日志消息的级别

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

2.7rsyslog配置文件

/etc/rsyslog.conf 配置文件格式:由三部分组成

  • MODULES:相关模块配置
  • GLOBAL DIRECTIVES:全局配置
  • RULES:日志记录相关的规则配置
#*: 所有级别
#none:没有级别,即不记录
#PRIORITY:指定级别(含)以上的所有级别
#=PRIORITY:仅记录指定级别的日志信息
#全局配置没有局部配置高
#文件路径:通常在/var/log/,文件路径前的-表示异步写入
#用户:将日志事件通知给指定的用户,* 表示登录的所有用户
#日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
#管道: | COMMAND,转发给其它命令处理

三、操作

3.1ssh服务的日志单独设置

  1. 进入ssh的配置文件

  2. 修改AUTHPRIV

  3. 修改成LOCAL6

  4. 注销AUTHPRIV,创建LOCAL6并设置路径/var/log/ssh.log

  5. 重启服务

  6. 启动ssh服务,查看日志文件

3.2网络日志(远程日志功能)

  1. 服务器Centos7-2和日志服务器Centos7-1都需要打开tcp服务

  2. 该命令查看tcp服务的514端口是否开放

  3. 把日志路径改为日志服务器

  4. 重启服务

  5. 写入测试日志

  6. 发现日志传进来了

本文作者:德国南部之星

本文链接:https://www.cnblogs.com/mtwm/p/17592655.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   德国南部之星  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑