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

文件属性_12.22linux文件属性详解?

12.22linux文件属性详解内容:1. inode和block特点与查看2. 磁盘空间满了的三种常见故障类型排查与解决3. 文件类型详解与查看4.&

12.22

linux文件属性详解

内容:

1. inodeblock特点与查看

2. 磁盘空间满了的三种常见故障类型排查与解决

3. 文件类型详解与查看

4. linux用户类型及相关文件

5. 服务器的连接与安全

6. 软链接与硬链接的区别,特点及创建

7. linux下彻底删除一个文件的原理与步骤

8. linux下三种时间介绍



第1章 整体说明

技术分享图片

第2章 inode 与 block

2.1 inode:  index node  索引节点  存放的是文件/目录属性信息,大小,时间,类型,权限,   inode里面唯独不包含文件名本身。(文件的名字不是文件的属性)

2.2 block   块   文件的内容   数据存放的位置

2.3 inode  block 特点

1. inode存放文件的属性,block的位置

2. 创建一个非空文件至少要占用一个inode和至少一个block

3. 在同一个分区中,如果两个文件的inode号码相同,这两个文件互为硬链接,硬链接相当于是文件                

不同的入口

4. block是存放数据的空间

5. block大小4K,比较大的文件会占用多个block,比较小的文件(1K)剩余的空间无法使用

6. 磁盘读取数据是按block为单位读取的

7. 每读取一个block就会消耗一次磁盘I/Oinput/output 磁盘读写)

 

2.4 怎么来的?

预备姿势:

大房子(硬盘)-->划分隔断(分区)-->装修(格式化)-->装修风格(文件系统类型)-->安装门窗(挂载)

inode block 是在格式化创建文件系统的时候诞生

2.5 查看文件内容与  inode block  的关系

用户文件名→inode→block(文件内容)

技术分享图片 

 

2.6 怎么查看inodeblock信息

2.6.1 查看inode

ls  -lhi  /etc/hosts   查看某个文件inode号码

[[email protected] oldboy]# ls -lhi gao

total 12K

405094 -rw-r--r--. 1 root root   16 Dec 12 14:38 feng

390247 drwxr-xr-x. 2 root root 4.0K Dec 15 03:54 n

df -i   查看系统中一共有多少inode数量    

[[email protected] n]# df -i

Filesystem     Inodes IUsed  IFree IUse% Mounted on

/dev/sda3      593344 58618 534726   10% /

tmpfs           60748     1  60747    1% /dev/shm

/dev/sda1       51200    42  51158    1% /boot

2.6.2 block   磁盘容量

ls  -lhi  /etc/hosts   查看某个文件大小

[[email protected] n]# ls -lhi /etc/hosts

260127 -rw-r--r--. 2 root root 177 May 20  2017 /etc/hosts

df   -h    查看磁盘空间使用情况

[[email protected] n]# df -h 

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.7G  6.7G  20% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

 

软链接和硬连接的区别

 

2.7 【企业案例】磁盘空间满了,no space left on device(磁盘

空间不足

创建测试环境 

mkdir -p /app/logs  

dd if=/dev/zero of=/dev/sdc bs=8K  count=10   创建指定大小文件

ls -l /dev/sdc

mkfs.ext4 /dev/sdc                格式化并创建文件系统(ext4)

mount -o loop /dev/sdc /app/logs          挂载

2.7.1 block满了

dd if=/dev/zero of=/dev/sdc bs=8K  count=10    模拟大文件

解决:删大文件,腾出空间

2.7.2 inode满了

touch {1..10}                                   模拟多个文件

解决:删小文件,腾出名额限制

2.8 企业案例:如果向磁盘写入提示如下错误:NO space left on device(磁盘空间不足),通过df -h查看磁盘空间,发现没满,请问可能的原因是什么?企业场景什么情况下会导致这个问题发生?

错误:inode用光了

原因:大量的小文件    ---定时任务书写错误导致

 

 

 第3章 文件类型

扩展名 .log   .txt  .conf   .avi  用来区分不同类型的文件

3.0.1 windows:   强制、严格通过扩展名识别不同类型文件

3.0.2 Linux:    扩展名方便我们人类区分不同文件类型

3.0.3 拓展名含义:   .conf    配置文件

.sh      脚本(命令大礼包)

3.0.4 linux下面常见的文件类型

-  (ls)  f (file)   普通文件    

d          d            目录

l          l            软链接   符号链接   快捷方式

3.0.5  普通文件详解    

1. 纯文本文件  text     /etc/hosts

2. 二进制文件(命令)   /bin/ls

3. 数据文件(data)       压缩包

3.0.6 file    查看文件的类型

file  /tmp/etc.tar.gz

第4章 linux用户基础内容

UID   user   id    用户id

   GID   group  id    用户组id

 

 

4.0.1 linux用户分类

root        皇帝   UID==0

虚拟用户   傀儡   linxu下面每个程序、进程都需要一个对应的用户和组

                  无法登录系统    UID==1--499

普通用户      百姓   UID=500+   6万多)

4.0.2 id   查看用户id和所属组     id  oldboy

[[email protected] n]# id root

uid=0(root) gid=0(root) groups=0(root)

4.0.3 对于一个文件/用户来说,用户分为几种

/etc/hosts         主人       亲戚        陌生人

          属主(所有者)    属组       其他区用户

[[email protected] n]# ls -l 6

-rw-r--r--. 1 root root 0 Dec 22 07:28 6

-普通文件   rw- 所有者   r--属组    r--其他用户    

4.0.4 linux权限

r          读                         4  

w          写                         2

x          可执行(命令  脚本)       1

-          没有权限

4.0.5 与用户相关的文件

/etc/passwd        存放用户的信息

/etc/shadow        存放用户密码

/etc/group          存放用户组信息

/etc/gshadow       存放用户组密码

 

4.0.6 /etc/passwd文件详解

技术分享图片 

centos6.9 默认shell  /bin/bash  

第5章 服务器的连接与安全

5.0.1 连接到服务器:

1. ip

2. 用户

3. 密码

4. 端口号22

 

5.0.2 保护服务器:

1. 修改远程连接端口号

2. 禁止root用户远程登录系统

 

第6章 软连接(soft  linksymlink)与硬链接(hard  link

6.1 硬链接

6.1.1 概念:

文件(超市)的入口           硬链接

文件(超市)的入口数量       硬链接数量

在同一个分区中,inode号相同的文件互为硬链接

6.1.2  ln    创建链接      默认创建硬

[[email protected] gao]# ln yun.txt yun.txt_hard

[[email protected] gao]# ls -lhi yun.txt*

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt_hard

6.1.3 作用:防止文件误删除,,两个入口,存在一个即可

6.1.4 特点:

1. 硬链接与原文件在同一分区,inode相同

2. 硬链接不可跨文件系统创建

3. 删除原文件,硬链接可用

4.不能对目录创建硬链接

6.2 软链接:   -s       默认权限 777

6.2.1 概念:

相当于windows的快捷方式

指向源文件

源文件丢失,软链接失效

6.2.2 ln  -s  创建软链接   

[[email protected] gao]# ln -s yun.txt yun.txt_soft

[[email protected] gao]# ls -lhi yun*

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt_hard

405095 lrwxrwxrwx. 1 root root 7 Dec 22 08:29 yun.txt_soft -> yun.txt  指向源文件

 

6.2.3 特点:

1)软链接可跨文件系统建立

2)创建软链接尽量使用绝对路径(相对路径--源文件路径改变软链接不可用)

3)删除源文件,软链接失效

4)指向源文件,相当于windows的快捷方式

 

6.2.4 错误:创建软链接时使用相对路径,原文件移动位置,导致软链接不可用

特点:一闪一闪亮晶晶

技术分享图片 

6.2.5 结论:创建软链接用绝对路径

ln  -s  /oldboy/ett.txt     ett.txt_soft

6.3 总结

1) 删除原文件,软连接不可用

2) 删除硬链接,都没有影响

3) 删除源文件和硬链接,相当于没有任何入口(硬链接数为0

 

第7章 Linux下面一个文件被彻底删除的条件

1. 文件的硬链接数为0                        rm

2. 进程调用数为0(谁还在使用这个文件)      lsof

 

7.0.1  lsof |grep secure 查看被进程调用的文件(是否有进程正在使用被删除的文件)

技术分享图片 

7.0.2 企业案例:  磁盘空间满了,删除大文件,可磁盘空间并没有减小

分析:你把文件删除了(硬链接),但这个文件还有进程在使用,所以这个文件并没有被彻底删除,最终导致磁盘空间不足

就好像你只是把超市的大门封住了,但超市本身还在

 

 

 

解决步骤

1.模拟环境

seq 500000 >>/var/log/messages

2.查看磁盘空间    df -h    逐层排查

[[email protected] /]# df -h         查看那个分区占空间大

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  6.3G  2.1G  75% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

 

3.[[email protected] /]# du -sh /var/* |grep "G"    进目录进一步排查哪个子目录/文件大

4.6G /var/log

[[email protected] /]# du -sh /var/log/* |grep "G"

4.6G /var/log/messages

 

4.删除文件  ---询问boss后删除

\rm /var/log/messages -f

 

检查:

5.查看磁盘空间

[[email protected] /]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  6.3G  2.1G  75% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

磁盘空间并没有被释放     由此---有某个文件并没有被彻底删除

6.lsof  |grep messages查看哪个进程在使用被删除的文件

[[email protected] /]# lsof |grep messages

rsyslogd   2491      root    1w      REG                8,3 4888893610     141095 /var/log/messages (deleted)

标志(detele)这个文件没有被彻底删除(硬链接数为0,进程调用数不为0

 

7.重启进程     /etc/init.d/rsyslog  restart

 

再次检查

8.查看磁盘空间 df -h

[[email protected] /]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.7G  6.7G  21% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

磁盘空间被释放

 

7.0.3 总结:  

1.找出系统中硬链接数为0,进程调用数不为0的文件(没有被彻底删除的文件)

lsof  |grep delete

 

2.排查哪个文件占地大     du -   sh  /* |grep G

[[email protected] /]# du -sh /*|grep "G"

du: cannot access `/proc/50234/task/50234/fd/4': No such file or directory

du: cannot access `/proc/50234/task/50234/fdinfo/4': No such file or directory

du: cannot access `/proc/50234/fd/4': No such file or directory

du: cannot access `/proc/50234/fdinfo/4': No such file or directory

1.1G /usr

4.7G /var

3.以后会学习各种软件/服务日志及命令

 

7.1 磁盘空间系列小结:

7.1.1 block满了   文件没有被彻底删除(硬链接为0,进程调用数不为0

工作中   lsof |grep delete  排查

7.1.2 block满了  正常满了

df -h 哪里满了

du  -sh  /* 一层一层排查  具体哪个目录/文件

确认之后,询问boss是否 删除

7.1.3 inode用光了

 某个目录下有大量的小文件   

 ----定时任务错误

解决方法:找出系统中目录大小大于1M

[[email protected] oldboy]# ls -lhd xiaodong/

drwxr-xr-x. 2 root root 4.0K May 20 23:22 xiaodong/

[[email protected] oldboy]# du -sh xiaodong/

11M xiaodong/

目录本身大小和目录下文件数量有关,与文件大小无关

目录占地面积     -----文件越多,占地越大

touch  {1..10000}.txt

[[email protected] oldboy]# ls -ldih xiaodong

394659 drwxr-xr-x. 2 root root 252K May 20 16:53 xiaodong

 

 

7.2 如何在linux中删除的大量的小文件

删除文件太多,删不了

[[email protected] xiaodong]# \rm -f *.txt

-bash: /bin/rm: Argument list too long

解决:

1ls *.txt  |xargs rm     删除大量文件

[[email protected] xiaodong]# ls *.txt|xargs rm

[[email protected] xiaodong]# ls

注:2)删上亿个文件    一点一点删   否则会卡

3)删除目录(删除之前记录好目录的权限和所有者)

 

7.3 如何在linux中创建大量小文件

错误:

[[email protected] xiaodong]# touch {1..400000}.txt

-bash: /bin/touch: Argument list too long

解决:

echo {1..500000}.txt  |xargs touch   创建太多文件

 

 

 

第8章 linux 下面几种时间

8.1 文件被修改或被访问的时间

mtime  modify time 【修改时间】文件/目录的修改时间。文件内容修改

ctime   change time 【属性改变时间】文件/目录属性的改变时间,大小,硬链接数,权限,所有者,所属的组,类型

atime   access time  【访问时间】文件/目录的访问时间,cat查看

 

8.2 stat  显示文件时间信息    stat /oldboy.txt

 

[[email protected] oldboy]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 29         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d Inode: 405110      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-12-22 03:11:51.662787272 +0800

Modify: 2017-05-20 06:27:29.100976131 +0800

Change: 2017-05-20 06:27:29.100976131 +0800

 

8.3 atime  短期内查看次数多只计入一次  (防止磁盘空间浪费)

 

 

第9章 总结:

1. 文件属性总体介绍

2. inodeblock  怎么来的 啥意思 特点

3. 企业案例  磁盘空间不足  原因

4. 用户分类

5. /etc/passwd  每一列含义

6. linux权限  

7. linux软链接与硬链接

 

第10章 注意

10.1 硬链接文件两个文件inode号相同 占用了几个两个inode一个block

10.2 touch {1..100}   快速创建多个文件

 

10.3 mv     原地移动相当于重命名

10.4 文件夹和文件都消耗inodeblock

 

 

 

 

 

 

 

 



推荐阅读
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 如何在Linux系统中实现Windows风格的桌面环境:将Ubuntu 18.04定制为Windows主题界面
    如果您是从Windows转到Linux系统的用户,可能会觉得默认的Ubuntu主题和桌面环境缺乏吸引力和可定制性。尤其是对于习惯了Windows风格的任务栏和主题的用户,Ubuntu 18.04的橙色主题可能显得过于简洁。为了提升用户体验,可以通过安装特定的桌面环境和主题来实现类似Windows的界面效果。本文将详细介绍如何在Ubuntu 18.04中配置和定制桌面环境,使其具备Windows风格的外观和功能。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Win10 周年更新 14393.1737 的详细内容与改进
    尽管今天不是常规的周二补丁日,微软依然发布了 Win10 周年更新 14393.1737 和 Win10 创意者更新 15063.632。本文将详细介绍 Win10 周年更新 14393.1737 的主要更新内容。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
author-avatar
YON永世
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有