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)
- 最后一次修改文件或目录(内容)的时间
- ctime(change 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服务的日志单独设置
-
进入ssh的配置文件
-
修改AUTHPRIV
-
修改成LOCAL6
-
注销AUTHPRIV,创建LOCAL6并设置路径/var/log/ssh.log
-
重启服务
-
启动ssh服务,查看日志文件
3.2网络日志(远程日志功能)
-
服务器Centos7-2和日志服务器Centos7-1都需要打开tcp服务
-
该命令查看tcp服务的514端口是否开放
-
把日志路径改为日志服务器
-
重启服务
-
写入测试日志
-
发现日志传进来了
本文作者:德国南部之星
本文链接:https://www.cnblogs.com/mtwm/p/17592655.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律