热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Linux文件系统与日志分析

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux文件系统与日志分析相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux文件系统与日志分析相关的知识,希望对你有一定的参考价值。








Linux文件系统与日志分析


    • 一.inode和block概述
      • 1.1 inode和block
      • 1.2Inode的内容Inode包含文件的元信息
      • 1.3stat命令
      • 1.4df指令
      • 1.5inode的内容
      • 1.6Inode的号码
      • 1.7inode的大小
      • 1.8inode的特殊作用

    • 二:硬链接与软链接
      • 2.1链接文件
      • 2.2硬链接
      • 2.3软链接
      • 2.4软链接与硬链接总结

    • 三.恢复误删除的文件
      • 3.1xfsdump命令格式
      • 3.2xfsdump使用限制
      • 3.3恢复XFS类型的文件

    • 四.日志文件
      • 4.1日志保存日志
      • 4.2主要日志文件介绍
      • 4.3日志消息的级别
      • 4.4保存目录
      • 4.5查看文件指令
      • 4.6程序日志分析
      • 4.7内核及系统日志
      • 4.8 journalctl 指令





一.inode和block概述


1.1 inode和block

一个文件有一个inode,通过indoe来读取文件,存放着文件的元信息即属性信息,
文件数据包括元信息与实际数据
●文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
●block(块)
连续的八个扇区组成一个block 大小为4K
是文件存取的最小单位
●inode(索引节点)
中文译名为“索引节点”,也叫i节点


1.2Inode的内容Inode包含文件的元信息

●文件的字节数
●文件拥有者的User lD
●文件的Group ID
●文件的读、写、执行权限
●文件的时间戳
用STAT命令可以查看某个文件的inode信息
●示例:stat aa.txt


1.3stat命令

stat +文件 用来此案是文件的详细信息,包括indo,atime,mtime.ctime
atime 访问时间
mtime 修改文章内容时间
ctime 修改元信息时间
ll -i a 显示节点号
df -i 看文件系统的inode情况
stat -f a 显示文件系统的详细情况

1.4df指令

df - 报告文件系统磁盘空间的使用情况
df -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。
df -h:以容易理解的格式输出文件系统大小,例如124KB、345MB、46GB。
df -i:显示i节点信息,而不是磁盘块。
df -t:显示各指定类型的文件系统的磁盘空间使用情况。
df -x:列出不是某一指定类型文件系统的磁盘空间使用情况。
df -T:显示文件系统类型。
df 以512字节为单位
df –k 以1024字节为单位

在这里插入图片描述


1.5inode的内容

●目录文件的结构
目录也是一种文件
目录文件的结构
在这里插入图片描述
●每个inode都有一个号码,操作系统用inode号码来识别不同的文件
●Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名只是inode号码便于识别的别称


1.6Inode的号码

用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码,获取inode信息
3.根据inode信息,找到文件数据所在的block,读出数据
查看inode号码的方法
ols -i命令:查看文件名对应的inode号码ls -i aa.txt
stat命令:查看文件inode信息中的inode号码stat aa.txt
文件存储小结
磁盘分区后的结构
在这里插入图片描述
访问文件的简单流程
在这里插入图片描述


1.7inode的大小

●inode也会消耗硬盘空间
每个inode的大小
一般是128字节或256字节
●格式化文件系统时确定inode的总数
●使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量


1.8inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
●当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
●移动或重命名文件时,只改变文件名,不影响inode号码
●打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

xfs_info /dev/sda1 xfs类型看inode大小
dumpe2fs ext4类型

按节点号删除文件
在这里插入图片描述


二:硬链接与软链接


2.1链接文件

一种类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,这种称为软链接
另一种则是通过文件系统的inode链接文件来产生新的文件名,而不是产生新文件,这种称之为硬链接


2.2硬链接

一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。

但是Linux系统允许,多个文件名指向同一个inode号码。这表示可以用不同的文件名来访问同样的内容

ln命令可以创建硬链接,命令基本格式

ln 源文件 目标 /// 不能对目录做硬链接

运行此命令后,源文件和目标文件的inode号码相同,都指向同一个inode。
inode信息中的“链接数”此时就会增加1
当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名
但删除一个文件名,不会影响另一个文件名的访问
删除一个文件名,就会使得inode信息中的“链接数”减少1


2.3软链接

软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名
例如:文件A和文件B的inode号虽然不一样,但是文件A的内容是文件B的路径。
读取文件A时,系统会自动将访问者导向文件B
此时,文件A就称为文件B的“软链接(soft link)”或者“符号链接(symbolic link)”
这表示,文件A依赖于文件B而存在,如果删除了文件B ,打开文件A就会报错
这是软链接与硬链接的最大不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode“链接数”不会因此产生变化。
软链接的创建命令的基本格式为:

ln -s 源文件或目录 目标文件或目录

2.4软链接与硬链接总结

链接文件是为文件或目录建立链接文件
在这里插入图片描述
删除原始文件后,软链接无法找到原始文件的文件名,所以会报错。硬链接与原始文件inode相同,所以不影响访问,仍旧可用。
删除一个文件,实际上并不清除inode节点和block的数据,只是在这个文件的父目录里面的block中,删除这个文件的名字
Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除


三.恢复误删除的文件

恢复XFS类型的文件


3.1xfsdump命令格式

xfsdump -f 备份存放位置 要备份的路径或者设备文件

xfsdump备份级别(默认为0)
0:完全备份
1-9:增量备份
xfsdump常用选项:-f,-L,-M,-s
xfsrestore命令格式

xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

3.2xfsdump使用限制

只能备份已挂载的文件系统
必须使用root的权限才能操作
只能备份xfs文件系统
备份后的数据只能用xfsrestore解析
不能备份两个具有相同UUID的文件系统


3.3恢复XFS类型的文件

【1】磁盘分区挂载

fdisk sdb
mkdir /opt/bak mkdir /opt/bak
mount /dev/sdb1 /opt/bak/

【2】xfsdump备份

xfsdump -f /bak /dev/sdb1 -L sdb1 -M sdb1 // -L -M 后面跟的是卷标
xfsdump -I 查看

【3】恢复

xfsrestore -f /bak /opt/bak
xfsdump -l 指定默认级别 // 刚开始的时候默认为 0

四.日志文件

●日志的功能
用于记录系统,程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
●日志文件的分类
内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志:记录系统用户登录及退出系统的相关信息
●程序日志
由各种应用程序独立管理的日志文件,记录格式不统一


4.1日志保存日志

默认/var/log 目录下
在这里插入图片描述


4.2主要日志文件介绍

/var/log/messages:记录Linux内核消息和各种应用程序的公共日志信息,包括启动,I/O错误,网络错误,程序故障等

对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的时间记录信息
/var/log/cron:记录crond计划任务产生的事件信息
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息
/var/log/maillog:记录进入或发出系统的电子邮件活动
/var/log/lastlog:记录每个用户最近的登录时间
/var/log/secure:记录用户认证相关的安全事件信息
/var/log/wtmp:记录每个用户登录,注销及系统启动和停机事件
/var/log/btmp:记录失败的,错误的登录尝试及验证事件
yum安装的都存放在/var/log
手工编译安装的都是自己指定的目录


4.3日志消息的级别

受rsyslogd服务管理的日志文件都是Linux系统中最重要的日志文件,它们记录了Linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息
在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级(数字等级越小,优先级越高,消息越重要)
在这里插入图片描述
内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中

日志消息还可以记录到特定的存储设备中,或者直接发送给指定用户

日志记录的一般格式

[root@localhost log]# more messages
Oct 23 14:13:17 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying
to leave 136.7M free of 903.6M available → current limit 91.1M).
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpuset
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpu
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpuacct
以这段消息举例:Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys
时间标签:Oct 23 14:13:17:消息发出的日期和时间
主机名:localhost:生成消息的计算机的名称
子系统名称:kernel:发出消息的应用程序的名称
消息:Initializing cgroup subsys :消息的具体内容

4.4保存目录

保存了用户登录,退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录,注销及系统开,关机事件
/var/log/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件


4.5查看文件指令

users,who,w,
last,看最近正确登录的信息
lastb 最近登录错误的信息
tail -f tailf
tail -100 messages | grep -i error 从100行开始看错误日志
cat /proc/loadavg 看系统负载 // w top uptime

查询当前登录的用户情况:users,who,w命令


4.6程序日志分析

由相应的程序独立进行管理

web服务:/var/log/httpd/
access_log,error_log(httpd网站服务程序使用的两个日志文件access_log和error_log,分别记录客户访问事件,错误事件。)
代理服务:/var/log/squid/
access.log , cache.log
FTP服务:/var/log/xferlog

分析工具

文本查看,grep过滤检索,webmin管理套件中查看
awk,sed等文本过滤,格式化编辑工具
webalizer,awstats等专用日志分析工具


4.7内核及系统日志

由系统服务rsyslog统一管理
●软件包: rsyslog-7.4.7-16.el7.x86_64
●主要程序:/sbin/rsyslogd
●配置文件:letc/rsyslog.conf


4.8 journalctl 指令

Contos7才有用来看日志,管理服务进程

journalctl -xe 看日志(系统提不起来才用)
journalctl -k 看内核
journalctl -b 看系统启动
journalctl -u 看某个服务
journalctl -e 从尾部开始看最近的
journalctl -x 提供网址信息





推荐阅读
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 原因:在vm上装7.9到sp3,打补丁到1644,再往后别打了,就打就打不开终端了,这个是java安全问题,以下只是终端的一些命令,记录一下:在系统下查看当前的串口:lsdev-C ... [详细]
  • Telnet的使用(Telnet远程连接Linux)
    一、环境描述:客户端:Win10操作系统 ... [详细]
  • 一、概述nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的 ... [详细]
  • Java程序员必会的40个Linux命令!
    你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起 ... [详细]
  • shell 学习1
    shell编程Bash操作:EOF:输入重定向执行命令.1.shBash1.sh#!binbashecho“1234”usrbinpython ... [详细]
  • mysql环形复制加HA_MySQL互为主从复制实现HA功能
    每个MySQL服务器节点都需要运行mmmd_agent,同时在另外一台机器【可以是独立的一台服务器也可以是和AppServer共同享一个服务器】上运行mmmd_monm ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  •  1.在将一个表unload时,出现:244:Couldnotdoaphysical-orderreadtofetchnextrow107:ISAMerror:recordislocked在不重启动数据库 ... [详细]
  • 转载请注明出处:http:blog.csdn.netl1028386804articledetails78666356直接上代码:#!binsh##j ... [详细]
  • 1.判断磁盘使用空间df-h|grep-vFile|seds%g|awk{if($580)print使用空间超过了80%:,$6}或#!binbash#Filename:di ... [详细]
author-avatar
不想与你见面_637
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有