码迷,mamicode.com
首页 > 系统相关 > 详细

Linux之文件属性

时间:2019-01-14 14:45:10      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:nod   防止   sci   备份   参数   ldb   符号链接   line   方法   

文件属性是什么?

[root@luffy_boy-001 /]# ls -lhi /etc/hosts
129822 -rw-r--r--. 2 root root 198 Jan 11  2019 /etc/hosts

文件属性就是 ls  -lhi 命令输出结果每一列的含义

l   list one file per line
i   --inode   print the index number of each file
h  --human-readable       with -l, print sizes in human readable format
                               (e.g., 1K 234M 2G)
129822      # inode号码
-           # 文件类型
rw-r--r--.  # 文件的权限.(.与selinux有关)
2           # 文件硬链接数量
root        # 主人
root        # 家人
198         # 文件大小
Jan  11 2019    # 最后修改时间
/etc/hosts      # 文件名不是文件的属性

 

inod和block简介

我们从获得一个硬盘,到可以向硬盘中存放数据,都经历了哪些阶段?

做一个比喻,把硬盘比作房子的话。

有房子----------------->买了个硬盘

划分隔断-------------->分区

装修-不同风格-------->格式化创建文件系统

安装门窗--------------->挂载

住人--------------------->存数据

 

inode

1、inode的含义

用来存放文件属性的空间

我们通过iNode号码来找到这个空间

inode号码----家庭住址
inode空间----家

文件名不存放在inode中。

2、inode怎么出来的

通过格式化创建文件系统,得到

3、inode的特点

  1. inode存放文件属性
  2. 存放block的位置(指向block的指针)
  3. 创建一个文件要占用一个inode
  4. inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口
  5. inode在某一个文件系统(分区),是唯一的

4、怎么使用inode和查看

[root@luffy_boy-001 /]# df -i (系统里面inode用了多少,剩余多少)
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda3      462384 55433 406951   12% /
tmpfs          488562     1 488561    1% /dev/shm
/dev/sda1       51200    39  51161    1% /boot
/dev/sr0            0     0      0     - /mnt
[root@luffy_boy-001 /]# df -ih (-h人类可读)
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sda3        452K   55K  398K   12% /
tmpfs            478K     1  478K    1% /dev/shm
/dev/sda1         50K    39   50K    1% /boot
/dev/sr0            0     0     0     - /mnt
[root@luffy_boy-001 /]# ls -ilh (查看某些文件的inode)
total 122K
143585 drwxr-xr-x.   3 root root 4.0K Jan 12  2019 app
    29 dr-xr-xr-x.   2 root root 4.0K Jan 10  2019 bin
     2 dr-xr-xr-x.   5 root root 1.0K Jan 10  2019 boot
143562 drwxr-xr-x.   2 root root 4.0K Jan 10  2019 data
143552 drwxr-xr-x.   3 root root 4.0K Jan 10  2019 data_bak
     4 drwxr-xr-x.  20 root root 3.7K Jan 10  2019 dev
129795 drwxr-xr-x.  78 root root 4.0K May 20 01:08 etc
    30 drwxr-xr-x.   3 root root 4.0K Jan 11  2019 home

 

 

block

1、block的含义

 数据块,实际存放数据的位置

2、block是怎么来的

也是格式化创建文件系统

3、block的特点

  1. block是实际存放数据的位置
  2. block 默认4k(centos 6.x) 1k 8k
  3. 创建大文件会占用多个block,如果文件很小1k,4k剩余的空间会被浪费。
  4. 创建一个非空文件要占用一个inode和至少1个block
  5. 每读取一个block就会消耗一次磁盘I/O(input/output 磁盘读写)。

4、怎么使用和查看

[root@luffy_boy-001 /]# df -h  (查看磁盘block使用情况)
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       6.9G  1.5G  5.1G  22% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt

 

 

[root@luffy_boy-001 /]# ls -lh  
total 122K
drwxr-xr-x.   3 root root 4.0K Jan 12  2019 app
dr-xr-xr-x.   2 root root 4.0K Jan 10  2019 bin
dr-xr-xr-x.   5 root root 1.0K Jan 10  2019 boot
drwxr-xr-x.   2 root root 4.0K Jan 10  2019 data
drwxr-xr-x.   3 root root 4.0K Jan 10  2019 data_bak
drwxr-xr-x.  20 root root 3.7K Jan 10  2019 dev

 

 

oldboyfile寻宝

技术分享图片

 

经典案例:磁盘空间不足

no space left on device磁盘空间不足-因为block满了。
seq 100000000 >/tmp/big
#第一个里程碑-看看到底哪里满了
[root@oldboyedu01-nb ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot

#第二个里程碑-是哪一个目录占得空间大,最终定位到目录或文件
[root@oldboyedu01-nb ~]#
[root@oldboyedu01-nb ~]# du -sh /*|grep G
1.1G    /usr
7.4G    /var
[root@oldboyedu01-nb ~]# du -sh /var/*|grep G
7.3G    /var/log
[root@oldboyedu01-nb ~]# du -sh /var/log/*|grep G
7.3G    /var/log/messages
[root@oldboyedu01-nb ~]# ls -lh /var/log/messages
-rw------- 1 root root 7.3G Oct 16 19:20 /var/log/messages
#第三个里程碑-问清楚是否可以删除,然后在操作。

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

模拟环境的命令。
mkdir -p /app/logs
dd if=/dev/zero of=/dev/sdc bs=8K  count=10
ls -l /dev/sdc
mkfs.ext4 /dev/sdc

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


[root@oldboyedu01-nb ~]# cd /app/logs/
[root@oldboyedu01-nb logs]# touch stu{1..6}.log
touch: cannot touch `stu6.log: No space left on device
[root@oldboyedu01-nb logs]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.6G  6.9G  19% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   14K   55K  21% /app/logs
[root@oldboyedu01-nb logs]# df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda3      593344 58530 534814   10% /
tmpfs          488562     1 488561    1% /dev/shm
/dev/sda1       51200    39  51161    1% /boot
/dev/sdc           16    16      0  100% /app/logs

 

 解决办法:删除一些不需要的文件,释放一些inode

 

linux文件类型和扩展名

常见文件类型的种类

- f    file           普通文件
  d   directory  目录
   l   softlink     软链接(快捷方式)

普通文件的分类

普通文件 都显示的是 - ,但是也是有区别的,怎么查看不同类型的普通文件呢? 
[root@oldboyedu01-nb ~]# ls -l /tmp/etc.tar.gz  /bin/ls /etc/hosts
-rwxr-xr-x. 1 root root  117048 Mar 23  2017 /bin/ls
-rw-r--r--. 2 root root     200 Sep 25 20:19 /etc/hosts
-rw-r--r--  1 root root 9744299 Oct 20  2017 /tmp/etc.tar.gz

用file 查看文件详细类型
##二进制文件 命令 [root@oldboyedu01-nb ~]# file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped ##文本文件 [root@oldboyedu01-nb ~]# file /etc/hosts /etc/hosts: ASCII text ##数据文件 data [root@oldboyedu01-nb ~]# file /tmp/etc.tar.gz /tmp/etc.tar.gz: gzip compressed data, from Unix, last modified: Fri Oct 20 01:36:16 2017

 

 

Linux下面的扩展名

windows     windows下通过扩展名区分不同类型的文件。
linux           扩展名是用来给我们自己看的。就算手动修改或者添加了扩展名,他的文件类型还是不会改变

# 创建压缩包文件
[root@luffy_boy-001 ~]# tar zcf /oldbo_y.txt /oldboy/alex.txt 
tar: Removing leading `/ from member names
# 查看文件
[root@luffy_boy-001 ~]# cat /oldboy.txt           
 ? Y@P²P?F;MpM??)´ê½吾43e¹???R·?¡o??s?sL±?¯g?ºµ¯????}?"(
# 查看压缩包文件
[root@luffy_boy-001 ~]# tar tf /oldboy.txt 
oldboy/alex.txt

 

linux有以下常见的扩展名

.sh     脚本文件

.conf  配置文件

 

Linux里面用户角色分类

整体对于一个文件/目录来说:用户可以分为3类
主人         所有者的名字

家人         所有者属于的组的名字

陌生人

[root@oldboyedu01-nb tmp]# ll -hi /etc/hosts
390174 -rw-r--r--. 2 root root 200 Sep 25 20:19 /etc/hosts

 

假设我是pizza用户,如何查询我与这个文件有什么关系?

[root@luffy_boy-001 ~]# id pizza
uid=500(pizza) gid=500(pizza) groups=500(pizza)
#id查询用户信息 #属于哪个用户组

 

linux中存在于系统中的用户如何分类

linux中存在于系统中的用户如何分类
UID   user  id 用户的id号码=====身份证号码    √√√√√
GID   group id 用户组的id号码===户口本的号码



                     UID
1.皇帝 root            0


2.傀儡 虚拟用户        1-499   系统中每个进程要有一个对应的用户,无法使用的.


3.贫民百姓 普通用户     500+


如何保护皇帝root
1.禁止root远程登录
2.修改ssh默认的端口号22
3.定期分析/var/log/secure 记录着用户的登录信息


#与用户有关的文件

/etc/passwd     存放的是用户的信息

/etc/shadow     用户密码的信息
/etc/group      用户组的信息

/etc/passwd

root  :x:0  :0  :root:/root       :/bin/bash
oldboy:x:500:500:    :/home/oldboy:/bin/bash
第一列:用户名字
第二列:存放密码的地方
第三列:UID
第四列:GID
第五列:用户的说明信息,默认为空
第六列:用户的家目录

~
root     ~  /root
oldboy   ~  /home/oldboy

第七列:用户使用的shell,用户使用的命令解释器

/bin/bash--------centos默认的命令解释器
/sbin/nologin----用户无法登陆系统,相当于是傀儡用户

 

 

Linux基础权限(9位权限)介绍

r    4   read可以读取文件内容
w   2   write修改文件内容
x    1   execute可以运行文件(命令 脚本)
-    0   什么权限都没有

[root@luffy_boy-001 ~]# ls -l
total 40
-rw-------. 1 root root  1061 Jan 10  2019 anaconda-ks.cfg
-rw-r--r--. 1 root root 21736 Jan 10  2019 install.log

# 权限的显示,和查看方法,分割成三部分
# rw-   ---   ---
# rw-   r--   r--
# 主人   家人  陌生人
 420  000  000
 420  400  400
  6    0  0
  6    4  4
[root@oldboyedu01-nb ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23  2017 /bin/ls
 421401401
 7  5  5

 

 

软链接和硬链接

软链接--相当于win的快捷方式

也叫作,符号链接

 

如何创建软链接

[root@luffy_boy-001 oldboy]# ln -s alex.txt alex.txt-soft
[root@luffy_boy-001 oldboy]# ll
total 36
-rw-r--r--. 1 root root    0 Jan 10  2019 alex.txt
lrwxrwxrwx. 1 root root    8 May 20 23:02 alex.txt-soft -> alex.txt

 

软链接的特点

1、存放着源文件的位置

2、源文件被删除,软链接会找不到原链接,并失效,显示为红色,并闪动

3、节约时间

 

硬链接

相当于,超市的前后门,通过不同的大门进入超市

在同一个分区中,两个文件或多个文件的inode号码相同,这些文件互为硬链接

 

如何创建硬链接

[root@luffy_boy-001 oldboy]# ln alex.txt alex.txt-hard
[root@luffy_boy-001 oldboy]# ll
total 44
-rw-r--r--. 2 root root    4 May 20 23:04 alex.txt
-rw-r--r--. 2 root root    4 May 20 23:04 alex.txt-hard
lrwxrwxrwx. 1 root root    8 May 20 23:02 alex.txt-soft -> alex.txt
观察到硬链接数量由 1 变成了 2

 

 

硬链接的特点

1.相当于是超市的前后门,硬链接数量就是超市一共有多少门
2.删除硬链接或源文件,文件还是可以使用的
3.把硬链接和源文件都删除,文件被删除====>硬链接数量为0

技术分享图片

 

软链接和硬链接的区别

描述linux下软链接和硬链接的区别
解答:
 1) 如何创建:
    a)默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接。
 2) 含义:
    a)硬链接文件与源文件的inode节点号相同,而软链接文件相当于windows下面的快捷方式(inode节点号与源文件不同)
  b)硬链接主要用来防止误删,因为备份会占大量空间
3) 特点: a)不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到 b)软链接可以跨文件系统,硬链接不可以跨文件系统。 4) 怎么没的(源文件,软链接,硬链接与删除) a)删除软链接文件,对源文件及硬链接文件无任何影响; b)删除文件的硬链接文件,对源文件及软链接文件无任何影响; c)删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状); d)删除源文件及其硬链接文件,整个文件才会被"真正"的删除。

 

 

文件删除原理

什么情况,才是文件被删除了?

1、硬链接数为0,使用rm

2、进程调用数为0

3、当某个文件没有被彻底删除,会导致磁盘空间满了,因为只删除了硬链接数,而一直有进程调用,这个文件会越来越大

4、如何解决:查找机器自身的服务,然后重启apache和tomcat

 

技术分享图片

模拟问题

模拟思路
向/var/log/secure 追加8亿行
seq 800000000
#首先收到报警
[root@oldboyedu01-nb oldboy]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   14K   55K  21% /app/logs

#正常的排错过程。
[root@oldboyedu01-nb oldboy]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   14K   55K  21% /app/logs
[root@oldboyedu01-nb oldboy]# du -sh /* |grep G
du: cannot access `/proc/2904/task/2904/fd/4: No such file or directory
du: cannot access `/proc/2904/task/2904/fdinfo/4: No such file or directory
du: cannot access `/proc/2904/fd/4: No such file or directory
du: cannot access `/proc/2904/fdinfo/4: No such file or directory
1.1G    /usr
7.4G    /var
[root@oldboyedu01-nb oldboy]# du -sh /var/* |grep G
7.3G    /var/log
[root@oldboyedu01-nb oldboy]# du -sh /var/log/* |grep G
7.3G    /var/log/secure
[root@oldboyedu01-nb oldboy]# \rm -f /var/log/secure

#磁盘空间满了
[root@oldboyedu01-nb oldboy]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   14K   55K  21% /app/logs
[root@oldboyedu01-nb oldboy]# du -sh /* |grep G
du: cannot access `/proc/2914/task/2914/fd/4: No such file or directory
du: cannot access `/proc/2914/task/2914/fdinfo/4: No such file or directory
du: cannot access `/proc/2914/fd/4: No such file or directory
du: cannot access `/proc/2914/fdinfo/4: No such file or directory
1.1G    /usr
占用空间明明很小,空间却满了
这就是因为,系统中某个文件没有被彻底删除。

如何找出硬链接数量为0,进程调用数不为0 lsof 显示系统中所有的文件 [root@oldboyedu01
-nb oldboy]# lsof |grep delete rsyslogd 1250 root 2w REG 8,3 7803924480 130420 /var/log/secure (deleted) 软件名称 文件大小 文件名 (deleted)---标记 这个文件的硬链接数量为0,进程调用数不为0。 ##重启对应的服务 [root@oldboyedu01-nb oldboy]# /etc/init.d/rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] [root@oldboyedu01-nb oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.6G 6.9G 19% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdc 73K 14K 55K 21% /app/logs 磁盘空间不足-no space left on device 1.block满了正常-500G 存放505G视频 2.inode满了,大量的小文件 3.block 硬链接数量为0 进程调用数不为零 文件没有被彻底删除磁盘空间不足

 

 

磁盘空间不足问题小结(no space left on device)

1.block满了正常-500G 存放505G视频
2.inode满了,大量的小文件
3.block 硬链接数量为0 进程调用数不为0 ,文件没有被彻底删除磁盘空间不足

 

排查:

 技术分享图片

Linux文件属性之时间

3种
mtime   modified  time 文件的修改时间             文件内容的变化时间
ctime    change   time 文件属性的改变时间       硬链接数量 文件大小 文件权限
atime   access    time 文件的访问时间              cat

 

Linux之文件属性

标签:nod   防止   sci   备份   参数   ldb   符号链接   line   方法   

原文地址:https://www.cnblogs.com/yxiaodao/p/10262720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!