linux - 练习题 - 05
0、文件属性 inode block
文件属性 === ls -lhi 每一列的含义
[root@oldboyedu01 ~]# ls -lhi /etc/hosts
390175 -rw-r--r--. 2 root root 158 Jul 8 23:47 /etc/hosts
390175 # inode号码
-# 文件的类型
rw-r--r--. # 文件的权限(与selinux有关)
2 #文件硬链接数量
root #主人
root #家人(用户属于的家庭)
158 #文件大小
Jul 8 23:47 #文件修改时间
/etc/hosts #文件名
解释:
inode和block简介
获得一个硬盘到可以向硬盘中存放数据
硬盘
分区
格式化创建文件系统
挂载
inode (index node 节点)
一、含义:
用来存放文件属性的空间,通过inode号码找到这个空间
inode号码 - 家庭地址
inode空间 - 家庭
二、怎么来的:
格式化创建文件系统
三、特点:
1. inode存放文件属性
2. 存放block的位置(指向block的指针)
3. 创建一个文件占用一个inode
4. inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
硬链接数量 == 超市入口的数量
5.inode在某一个文件系统(分区),是唯一的。
四、怎么查看inode
ls -i (看某些文件的inode号码)
df -i (系统里面inode用了多少剩余多少)
[root@oldboyedu01 ~]# ls -lhi
total 3.4M
140392 -rw-------. 1 root root 1.1K Jul 8 23:13 anaconda-ks.cfg
145174 -rw-r--r--. 1 root root 1.6M Apr 24 21:15 get-pip.py
[root@oldboyedu01 ~]# df -i #(查看inode)
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 82974 510370 14% /
tmpfs 363134 1 363133 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
block (数据块)
一、含义:
数据块
block实际存放数据的位置
二、怎么来的:
格式化创建文件系统
三、特点:
1.block是实际存放数据的位置
2.block 一般是 4k(centos 6.x) / 1k / 8k
3.创建大文件会占用多个block,如果文件很小1k, 4k 剩余的空间会被浪费
4.创建一个非空文件要占用一个indoe和至少一个block
5.每读取一个block就会消耗一次磁盘I/O (input/output 磁盘读写)
四、怎么用/怎么看
df -h (磁盘block使用情况)
ls -lh 查看某个文件的blcok
[root@oldboyedu01 ~]# df -h #( 查看block)
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 2.2G 6.3G 26% /
tmpfs 1.4G 0 1.4G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
系统,查看文件的过程:
小结:
inode与block小结
1. 格式化创建文件系统
2.在同一个文件系统(分区),两个文件indoe相同,互为硬链接
3.创建一个非空文件要占用一个inode和至少一个1个block
4. 如何查看inode和block的使用情况 df -i / df -h
一、磁盘空间不足案例详解
前提:
seq 100000000 >/tmp/big
解决:
df -h
du -sh /*
du -sh /* |grep G
du -sh /usr/* |grep G
[root@oldboyedu01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 2.2G 6.3G 26% /
tmpfs 1.4G 0 1.4G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
[root@oldboyedu01 ~]# du -sh /*
8.0K /app
。。。
[root@oldboyedu01 ~]# du -sh /* |grep G
。。。
1.4G /usr
[root@oldboyedu01 ~]# du -sh /usr/* |grep G
二、写入磁盘时,提示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 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 2.2G 6.3G 26% /
tmpfs 1.4G 0 1.4G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
[root@oldboyedu01 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 82970 510374 14% /
tmpfs 363134 1 363133 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 11 5 69% /app/logs
查看:
cd /app/logs/
touch stu{1..6}.log
df -h
df -i
解决:
inode用光了,解决删除文件; rm -rf *.log
三、文件类型、扩展名
[root@oldboyedu01 ~]# ls -lhi
total 3.4M
140392 -rw-------. 1 root root 1.1K Jul 8 23:13 anaconda-ks.cfg
145174 -rw-r--r--. 1 root root 1.6M Apr 24 21:15 get-pip.py
130052 -rw-r--r--. 1 root root 22K Jul 8 23:13 install.log
130053 -rw-r--r--. 1 root root 5.8K Jul 8 23:12 install.log.syslog
145924 drwxr-xr-x. 6 501 games 4.0K Jul 11 22:11 pip-8.0.2
145912 -rw-r--r--. 1 root root 1.1M Apr 20 2016 pip-8.0.2.tar.gz
145216 drwxr-xr-x. 10 501 games 4.0K Jul 11 21:59 setuptools-19.6
145191 -rw-r--r--. 1 root root 627K Apr 23 2016 setuptools-19.6.tar.gz
。。。
意思:
140392 : inode
- : f = file 普通文件
file /bin/ls
二进制文件,命令; file /bin/ls
文本文件; file /etc/hosts
数据文件; file /tmp/etc.tar.gz
d : d = directory 目录
l : l = softlink 软链接(快捷方式)
扩展名: 文件后面的小尾巴
windows 通过扩展名区分不同类型的文件
linux 扩展名是用来给我们看的
.sh 脚本文件
.conf 配置文件
四、用户和用户组简介
用户分为3类:
主人 所有者的名字
家人 所有者属于的组的名字
陌生人
[root@oldboyedu01 tmp]# ll -hi /etc/hosts
390175 -rw-r--r--. 2 root root 158 Jul 8 23:47 /etc/hosts
[root@oldboyedu01 tmp]# id oldboy # id查询用户信息 属于哪个用户组
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
linux中存在于系统中的用户如何分类
UID user id 用户的id号码 == 身份证号码
GID group id 用户组的id号码 == 户籍号
-
root (皇帝)
-
UID == 0
-
虚拟用户 (傀儡)
-
UID == 1-499 系统中每个进程要有一个对应的用户,无法使用。
-
普通用户 (平民百姓)
-
UID == 500 +
如何保护皇帝:
-
禁止root远程登录
-
修改ssh默认的端口22
-
定期分析/var/log/secure 记录着用户的登录信息
五、与用户有关的文件
/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 --- 用户无法登录系统,相当于傀儡用户
/etc/shadow 用户密码的信息
/etc/group 用户组的信息
六、基础权限
r 4 read 可以读取文件内容
w 2 write 可以写文件内容
x 1 execute 可以运行文件( 命令 脚本)
- 0什么权限也没有
[root@oldboyedu01 ~]# ll /etc/hosts
-rw-r--r--. 2 root root 158 Jul 8 23:47 /etc/hosts
- rw- r-- r--. 2 root root 158 Jul 8 23:47 /etc/hosts
主人 家人 陌生人
6 4 4
[root@oldboyedu01 ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23 2017 /bin/ls
7 5 5
[root@oldboyedu01 ~]# ls -l /etc/passwd /etc/shadow
-rw-r--r--. 1 root root 1226 Aug 12 18:17 /etc/passwd
----------. 1 root root 866 Aug 12 18:19 /etc/shadow
七、软硬链接,区别
软链接: windows快捷方式
也叫符号链接:
软链接由来:
[root@oldboyedu01 oldboy]# ln -s oldboy.txt oldboy.txt-soft
[root@oldboyedu01 oldboy]# ll
total 52
-rw-r--r--. 1 root root 96 Jul 10 05:24 alex.txt
。。。
-rw-r--r--. 1 root root 0 Aug 22 21:30 oldboy
-rw-r--r--. 1 root root 31 Aug 24 02:49 oldboy.txt
lrwxrwxrwx. 1 root root 10 Aug 30 04:34 oldboy.txt-soft -> oldboy.txt
。。。
特点:
1.存放着源文件的位置
2.源文件被删除,软链接就找不到了
3.节约时间
硬链接由来:
-
相当于超市(文件的内容)的前后门,通过不同的大门(文件)进入。
-
在同一个分区中,两个文件或多个文件的inode号码相同,这些文件互为硬链接。
[root@oldboyedu01 oldboy]# ln oldboy.txt oldboy.txt-hard
[root@oldboyedu01 oldboy]# ls -lhi oldboy.txt*
140454 -rw-r--r--. 2 root root 31 Aug 24 02:49 oldboy.txt
140454 -rw-r--r--. 2 root root 31 Aug 24 02:49 oldboy.txt-hard
132738 lrwxrwxrwx. 1 root root 10 Aug 30 04:34 oldboy.txt-soft -> oldboy.txt
特点:
-
文件相当于超市,硬链接数量就是超市一共有多少门
-
删除硬链接或者源文件,文件还是可以使用的
-
把硬链接和源文件都删除,文件被删除 == 硬链接数量为0
软硬链接区别:
解答:
1) 如何创建:
a)默认不带参数情况下,ln 命令创建的是硬链接,带-s 参数的 ln 命令创建 的是软链接。
2) 含义:
a)硬链接文件与源文件的 inode 节点号相同,而软链接文件相当于 windows 下面的快捷方式(inode 节点号与源文件不同)
3) 特点:
a)不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到
b)软链接可以跨文件系统,硬链接不可以跨文件系统。
4) 怎么没的(源文件,软链接,硬链接与删除)
a)除软链接文件,对源文件及硬链接文件无任何影响;
b)除文件的硬链接文件,对源文件及软链接文件无任何影响;
c)除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
d)删除源文件及其硬链接文件,整个文件才会被"真正"的删除。
八、文件彻底删除某个文件没有被彻底删除,导致的磁盘空间满了。(原因:inode用光了)
1)删除这个文件所有相关的硬链接-rm---删除厕所所有的入口
2)这个文件的进程调用数也为 0 ------没有人在使用厕所
-
硬链接数为0
-
进程调用数为0
某个文件没有被彻底删除,导致的磁盘空间满了。(原因:inode用光了)
模拟思路
seq 8000000000
df -h # (查看block是否满了)
du -sh /* |grep G
du -sh /var/log/* |grep G
rm -f /var/log/secure
df -h # 这里删了没有被释放 还是满的
du -sh /* |grep G # 因为系统中某个文件没有被彻底删除
如何找出硬链接数量为0,进程调用数不为0
[root@oldboyedu01 ~]# lsof |grep delete
。。。
重启软件,就恢复了;;
/etc/init.d/rsyslog restart
磁盘空间不足
总结:
1.block满了
2.inode满了,大量的小文件
3.block 文件没有被彻底删除磁盘空间不足,硬链接数数量为0,进程调用数不为0;
九、linux修改、访问、改变时间简介
mtime = modified time 文件的修改时间 文件内容的变化时间
atime = access time 文件的访问时间
ctime = change time 文件属性的改变时间 硬链接数量 文件大小 文件权限
[root@oldboyedu01 oldboy]# stat oldboy.txt
File: `oldboy.txt'
Size: 75 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 133061 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-08-30 05:45:43.903891969 +0800
Modify: 2018-08-30 05:45:34.505890770 +0800
Change: 2018-08-30 05:45:34.521891383 +0800
修改文件:
echo hello >>oldboy.txt
ln oldboy.txt oldboy.txt-hard
查看时间:
stat oldboy.txt
十、文章总结及作业
-
文件删除原理
-
软链接与硬链接的区别
-
磁盘空间不足系列及排错过程
-
/etc/passwd 每一列含义
-
linux三种实际那
-
linux启动过程