文件属性
一、什么是属性?
属性是一些描述性的信息,可以用来帮助您查找和整理文件。属性未包含在文件的实际内容中,而是提供了有关文件的信息。文件名在linux中是严格区分大小写的。
一、什么是文件属性?
文件属性是ls -lhi 每一列的含义
三、文件属性的内容?
[root@oldboyedu01-nb ~]# ls -lhi /etc/hosts
390174 -rw-r--r--. 2 root root 200 Sep 25 20:19 /etc/hosts
[root@oldboyedu01-nb ~]# #文件属性=====ls -lhi 每一列的含义
用户属于的家庭 文件修改时间 文件名
390174 - rw-r--r-- . 2 root root 200 Sep 25 20:19 /etc/hosts
inode号码 文件的类型 文件的权限.(与selinux有关) 文件硬链接数量 主人 家人 文件大小
文件名不是文件的属性。
四、什么是inode号码?
inode用来存储这些数据属性信息的(ls -l 的结果),inode属性信息包含不限于文件大小、属性、归属的用户组信息、文件权限、文件类型、修改时间、还包含实体指针功能,但是inode唯独不包含文件名。inode:CentOS6默认大小是256个字节。
五、获得一个硬盘可以向一个硬盘中存放数据的简介?
硬盘(房子),分区(划分隔断),格式化创建文件系统(装修不同的风格),挂载(安装门窗)
获得硬盘相当于或得一个房子,获取房子后我们要对房子进行划分隔断,划分完隔断后,我们对房子进行装修,对于装修我们有不同的风格比如复古风,装修完房子后我们要对房子进行安装门窗。
四、inode 和block是怎么来的?
格式化创建文件系统,磁盘被分区并格式化为ext4文件系统后生成一定数量的indoe和block
五、inode的讲解?
1)含义
index node索引节点
含义:
用来存放文件属性的空间。通过inode号码找到这个空间的。
inode号码----家庭住址
inode空间----家庭
注意:
文件名不存放在inode中。
2)怎么来的
格式化创建文件系统
3)特点
1#inode是用来存储这些数据属性信息的(ls -l 的结果)
2#inode称为index node索引,它的作用是存放文件的属性信息以及文件内容的索引位置
3#ext3/ext4文件系统的block存放的是文件的实际内容
4#inode是表现形式的一串数字,inode号码相当于家庭地址,不同的文件对应的inode在文件系统里是唯一的
硬链接数量====超市入口的数量
5#inode节点号相同的文件,互为硬链接文件,可以认为是一个文件不同的入口
6#ext3/ext4文件系统格式,正常情况一个文件只能占用一个inode
4)怎么用/看******
ls -i(看某些文件的inode号码)
df -i(系统里面inode用了多少剩余多少)
六、block的讲解
block
1)含义
数据块
block实际存放数据的位置,每个block的大小一般1K、2K、4K几种,期中引导分区是1K,其它普通分区是多位4K
2)怎么来的
格式化创建文件系统
3)特点
1)、 如果一个文件很大,需要占用多个block,如果文件很小至少占用一个block,并且这个block的剩余空间就浪费了
2)、 磁盘读取数据是按照block读取数据的
3)、一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O
4)、如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多。
5)、无论内容有大小,如果block默认是4K大小,那么存放一个1K文件,剩余3K就不能存放别的文件,浪费空间。
6)、block并非越大越好,block大小对于存放小文件就会浪费磁盘空间。
7)、根据业务需求,确定默认的block大小,如果大文件一般设置block大一点,反之亦然。
8)、block太大,例如:4K,存放文件都是1K,大量磁盘空间浪费,但是访问性能提高
9)、blcok太小,例如:1K,文件都是1000K的,消耗大量磁盘I/O
10)、没读取一个block就要消耗一次磁盘I/O
4)怎么用/怎么看
df -h(磁盘block使用情况)
ls -lh
小结:
inode与block小结:
1.格式化创建文件系统
2.在同一个文件系统(分区),两个文件inode相同,互为硬链接
3.创建一个非空文件要占用一个inode和至少1个block
4.如何查看inode和block的使用情况 df -i df -h
七、访问oldboyfile的寻宝过程
第一步:
oldboyfile(文件名字):
文件名相当于藏宝图名字,这里存放的是藏宝图的位置也就是inode号码,
第二步:
藏宝图存放的是 宝藏的位置和属性,
相当于blcok的位置数据的实体也就是宝藏的位置,和文件的属性,比如文件大小、文件类型,所属用户等等
第三步:
block文件的数据内容,也就是宝藏了。
可以参考例图:
oldboyfile寻宝过程.png
八、企业案例:如果向磁盘写入数据提示如下错误:No space left on device(磁盘空间不足),通过df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下会导致这个问题发生?
1.500G 我向里面放入600G的数据 ----磁盘空间满了 block满了 df -h
2.df -h 磁盘空间还剩余很多,但是还是报错 no space left on device 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@oldboyedu-39-nb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.6G 6.8G 19% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
######磁盘空间满了之 block满了
[root@oldboyedu-39-nb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.6G 6.8G 19% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
[root@oldboyedu-39-nb ~]# cd /app/logs/
[root@oldboyedu-39-nb logs]# ls -lh /bin/ls
-rwxr-xr-x. 1 root root 115K Mar 23 02:52 /bin/ls
[root@oldboyedu-39-nb logs]# cp /bin/ls /app/logs/
cp: writing `/app/logs/ls': No space left on device
[root@oldboyedu-39-nb logs]# cp /bin/awk /app/logs/
cp: writing `/app/logs/awk': No space left on device
[root@oldboyedu-39-nb logs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.6G 6.8G 19% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 70K 0 100% /app/logs
[root@oldboyedu-39-nb logs]# cd /app/logs/
[root@oldboyedu-39-nb logs]# ls -lh
total 68K
-rwxr-xr-x 1 root root 0 May 20 12:39 awk
drwx------ 2 root root 12K May 20 12:36 lost+found
-rwxr-xr-x 1 root root 56K May 20 12:39 ls
[root@oldboyedu-39-nb logs]# \rm -f ls
[root@oldboyedu-39-nb logs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.6G 6.8G 19% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
######磁盘空间满了之 inode用光了
[root@oldboyedu-39-nb logs]# pwd
/app/logs
[root@oldboyedu-39-nb logs]# touch {1..6}.txt
touch: cannot touch `6.txt': No space left on device
[root@oldboyedu-39-nb logs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.6G 6.8G 19% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
[root@oldboyedu-39-nb logs]# touch oldboy.txt
touch: cannot touch `oldboy.txt': No space left on device
[root@oldboyedu-39-nb logs]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 57034 536310 10% /
tmpfs 238282 1 238281 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 16 0 100% /app/logs
[root@oldboyedu-39-nb logs]# ls -l
total 12
-rw-r--r-- 1 root root 0 May 20 12:43 1.txt
-rw-r--r-- 1 root root 0 May 20 12:43 2.txt
-rw-r--r-- 1 root root 0 May 20 12:43 3.txt
-rw-r--r-- 1 root root 0 May 20 12:43 4.txt
-rw-r--r-- 1 root root 0 May 20 12:43 5.txt
drwx------ 2 root root 12288 May 20 12:36 lost+found
[root@oldboyedu-39-nb logs]# \rm -f *.txt
[root@oldboyedu-39-nb logs]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 57034 536310 10% /
tmpfs 238282 1 238281 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 11 5 69% /app/logs
企业案例:如果向磁盘写入数据提示如下错误:No space left on device(磁盘空间不足),通过df -h查看磁盘空间,发现没满,请问可能原因是什么?
企业场景什么情况下会导致这个问题发生?
定时任务
磁盘空间满了:
情况一:block-500G磁盘存放400G+200G视频 放不下了。
情况二:inode-大量的小文件
九、磁盘空间不足的案例
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
#第三个里程碑-问清楚是否可以删除,然后在操作。
十、文件类型?
1、普通文件 - (file)
2、(纯)文本文件(ASCII)
3、二进制文件(binary)
4、数据格式文件(data)
linux下都有哪些普通文件类型有:
1、f file 普通文件
2、d directory 目录
3、-(regular file) 表示这是一个普通文件
4、l(soft link) 表示这是一个符号/软链接文件
5、b(block) 表示这是一个块设备文件
6、c(character) 表示这是一个字符设备文件
7、s(socket) 表示这是一个Socket(套接字)文件
8、p(named pipe) 表示这是一个管道文件
查看文件类型:file
root@oldboyedu-39-nb tmp]# ls -l /etc/hosts /tmp/etc.tar.gz /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23 02:52 /bin/ls
-rw-r--r--. 2 root root 189 May 20 09:45 /etc/hosts
-rw-r--r-- 1 root root 9733974 May 20 02:51 /tmp/etc.tar.gz
[root@oldboyedu-39-nb tmp]# file /etc/hosts
/etc/hosts: ASCII text
[root@oldboyedu-39-nb tmp]# file /tmp/etc.tar.gz
/tmp/etc.tar.gz: gzip compressed data, from Unix, last modified: Sat May 20 02:51:31 2017
[root@oldboyedu-39-nb tmp]# #compressed 压缩的文件
[root@oldboyedu-39-nb tmp]#
[root@oldboyedu-39-nb tmp]# 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
十、文件的扩展名---文件后面的小尾巴
1、介绍
windows windows通过扩展名区分不同类型的文件
linux 扩展名是用来给我们看的,linux是不区分文件扩展名的,
2、常用的
.sh 脚本文件
.conf 配置文件
十一、用户可以分为那几类?
1、主人 所有者的名字
2、家人 所有者属于组的名字
3、陌生人
4、查询用户的id号码和属于哪个用户组
id oldboy
5、UID user id 用户的id号码-------------身份证号码
6、GID group id 用户组的id号码-----------户口本的号码
7、root 用户的UID是0
8、傀儡虚拟用户 UID是1-499 系统中每个进程都要一个对应的用户
9、贫民百姓 普通用户 UID是500+
10、如何保护皇帝root用户
1)、禁止root远程登录
2)、修改ssh默认端口号是22
3)、定期分析var/log/secure 记录着用户的登录信息
11、与用户相关的文件
1)、/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
2)、/etc/shadow 用户密码信息
3)、/etc/group 用户组的信息
4)、/etc/gshadow 用户组密码信息
5)、/etc/skel
十二、linux基础权限介绍?
r 4 文件可以读取文件内容
w 2 write修改文件内容
x 1 execute可以运行文件(命令、脚本)
- 0 什么权限都没有
- rw- r-- r--. 2 root root 181 5月 12 14:14 /etc/hosts
主人 家人 陌生人
420 400 400
6 4 4
十三、硬链接和软连接
1、什么是软连接?
1)、软连接有什么特征?
1.软连接类似于windows快捷键
2.软连接拥有自己的i节点和Block块,但是数据块中只保存源文件的文件名和i节点号,并没有实际文件数据
3.文件类型是l
4.修改任意的文件,另一个都改变
5.删除(改名)原文件,软连接不能使用
6.再将文件创建(改名)成源文件,软连接即可重新使用
7.创建软连接 ln -s 示例例如:ln -s oldboy.txt oldboy.txt.soft
2、什么是硬链接?
1)、 硬链接有什么特征?
1.硬链接相当于前后门,通过不同的超市进入超市
2.在同一个分区中,两个文件或多个文件的inode号码相同,这些文件互为硬链接
3.拥有相同的i节点和存储block块,可以看作是同一个文件
4.可以通过i节点识别
5.不能跨分区
6.不能针对目录使用
7.删除硬链接或源文件,文件还是可以使用的
8.把硬链接和源文件都删除,文件被删除====硬链接数量是0
9.创建硬链接:ln oldboy.txt oldboy.txt-hard
3、硬链接和软连接有什么区别?
1)、 如何创建
默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软连接
2)、 含义
硬链接 文件源文件的inode节点相同,而软连接文件相当于windows下的快捷方式(inode节点号与源文件不同)
3)、特点
不能对目录创建硬链接,但是可以创建软连接,对目录的软连接经常会用到
软连接可以跨文件系统,硬链接不可以跨文件系统
4)、怎么没的
a)、删除软连接文件,对原链接文件及硬链接文件无任何影响
b)、删除文件的硬链接文件,对源文件及软连接文件无任何影响
c)、删除连接文件的源文件,对硬链接没什么影响,但是会导致其软连接失效
d)、删除源文件及其硬链接文件,整个文件才会被”真正“删除
5)、文件删除原理
a)、删除这个文件所有相关的硬链接-rm------删除厕所所有入口
b)、这个文件的进程调用数是0-----没有人再使用厕所
硬链接数量为0
进程调用数为0
4、某个文件没有被彻底删除,导致磁盘空间没了的情况
第一步、使用df -h 查看那个磁盘空间满了
第二步、查看某个文件是否满了du -sh /* | grep G
du -sh /mnt/* | grep G
du -sh /mnt/Packages/* | grep G
第三步、确定某个文件是否可以删除
5、 如何找到硬链接数为0,进程数不为0
使用 lsof | grep delete 查看硬链接为0,进程数不为0
delete 标记 ---硬链接为0,进程调用数不为0
6、关闭对应的服务 /etc/init.d/rsyslog restart
7、磁盘空间不足分三种情况
1)、 block满了,500G硬盘存放505G硬盘
2)、inode满了,存放了大量的小文件
3)、 block 硬链接数量是0,进程调用数不为0,文件没有被彻底删除磁盘空间不足
十四、linux的修改、访问、改变时间。
mtime modified time 文件的修改时间 文件的内容变化时间
ctime change time 文件属性的改变时间
atime access time 文件的访问时间 cat 包含:文件大小、文件权限、硬链接数量
显示文件属性stat olddboy.txt
Unix时间戳是什么?
Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒。
十五、文件大小
文件大小能衡量一个计算机文件的大小,
字节换算:
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
十六、正则表达式与通配符
1、特殊符号
' ' 所见即所得,吃啥吐啥
” “ 特殊符号被解析运行
`` ====$() 先运行里面的命令,把结果留下
> 重定向符号 先清空文件的内容,然后追加文件到最后
>> 追加重定向 追加文件到最后
2> 错误重定向 只要错误的信息 才能通过这个漏洞进入文件中
2>> 错误追加重定向
~ 当前用户的家目录
! 查找并运行历史命令
!awk 包含awk的命令 最近的一条运行
history | grep awk
# linux注释
root用户命令的提示符
$ 取出变量的内容
awk $取出某一列的内容
普通用户的命令提示符
* 所有 任何东西
\ 撬棍 转义字符
&& 前一个命令执行成功然后再执行后一个命令
ifdown eth0 && ifup eth0
|| 前一个命令执行失败了再执行后面的命令
2、 通配符
通配符是用来查找文件的,以.txt为例, *.txt *.log
1)、任意 所有 *
2)、生成序列 {} ,生成拷贝文件 cp oldboy.txt{,.bak}
3、什么是正则表达式,为何使用它,
通过符号表示文字内容
提高效率,省事。
支持正则表达式:linux三剑客 grep sed awk
4、使用正则的时候的注意事项
1)、正则表达式按照行进行处理的
2)、禁止使用中文符号
3)、 给grep和egrep配置别名
5、正则表达式与通配符的区别
用途 匹配的内容 支持的命令
通配符---用来匹配查找的文件名 *.txt *.log 以.txt .log结尾的文件 大部分的命令都可以使用
正则 ---在文件中匹配查找内容 包含oldboy的行 linux三剑客
6、正则表达式的分类
1)、基础正则 ^ $ . * [] [^] grep sed awk
2)、扩展正则 | + {} () ? grep -E/egrep sed -r awk
7)、正则表达式总结
连续出现(重复)
* >=0
+ >=1
? 0 1
{n,m} >=n <=m
{n} ==n
其他
. 任意一个字符
[abc] 一个整体 相当于是一个字符
[a-z] [0-9] [A-Z]
[^abc] 排除
| 或者
() 后向引用 反向引用 先保护再使用
^
$
.* 所有
^$ 空行
8)、查看帮助信息
1)、 man grep
2)、 infog grep
十七、linux权限详解
1、权限值rwx
2、如何知道我对某个文件有什么权限?
1)、 看看你是谁
whoami
2)、 你与这个文件或目录是什么关系
主人 家人 陌生人
判断是否和这个文件是一家子的
id===》groups
oldboy用户是这个文件的陌生人
3)、oldboy用户对这个文件的权限是最后三位 r--
3、权限的计算
r=======4
w 2
x 1
- 0
drwxr-xr-x
421401401
7 5 5
4、权限的修改
chmod === chang mode
1)、使用数字权限修改权限
chmod 755 oldboy.txt
2)、使用字母修改权限
主人 家人 陌生人
user group other
u g o
chmod u+x /oldboy/oldboy.txt
5、修改所属用户及用户组
chown oldboy.oldboy /oldboy/oldboy.txt
6、读取文件内容
1)、 r读取文件内容
2)、 w修改文件内容,但是需要r的配合
3)、 没有r的配合强制修改退出,会清空文件内容
4)、 x权限执行,需要r权限的配合
7、文件目录权限
r 查看目录里面的内容
w 可以在目录里面创建删除
x 可以进入目录
注意:对于目录来说,r表示 查看目录里面内容的权限,ls 需要x的配合
没有x权限,那么显示的时候文件属性无法显示
w表示可以在目录中创建 删除文件 重命名文件的权限
w无法删除 创建文件 w需要x的配合
文件 目录
r 读取文件的内容 查看目录的内容(需要x权限)
w 修改文件的内容(需要r) 在目录下面创建 删除文件(需要x权限)
x 执行文件(需要r) 进入到目录的权限(cd)
!!!!!!删除一个文件,要看你对这个文件所在的目录是否有wx权限。
8、网站需要被运行起来,通过一个傀儡用户运行起来的www
blog.oldboyedu.com
网址程序存放在/app/blog目录下面
1)、 blog目录下面的权限
file权限 644 dir 755 root root
2)、 blog/上传 file 644 dir 755 www www
9、 linux 控制系统默认权限的命令umask
文件最大权限是 666 022 644
目录最大权限是 777 022 755
umask默认最大的计算权限是022
修改umask 032
1)、对于目录 777直接减去umask
2)、对于文件 666减去umask的值,如果umaks某一位上面是奇数,减完umask 之后奇数位数+1
10、 文件系统属性
a ------ append 只能追加
i ------ immutable 无敌的 不可修改的
查看 文件属性的 lsattr /oldboy/oldboy.txt
修改 文件属性的 chattr +a /oldboy/oldboy.txt
11、linux的特殊权限
1)、suid setuid
作用:运行这个命令的时候,相当于这个命令的所有者(root)
形式:S s -rwsr-xr-x
危险:所有用户运行命令的时候,相当于是root用户
2)、sticky粘粘位1777 /tmp 目录
1:任何人都可以在这个目录里面创建文件(原来权限是777)
2:每个人只能管理自己的权限,其它人处理不了
[root@oldboyedu-39-nb tmp]# #exec