1.文件属性
[root@oldboyedu oldboy]# ls -lhi /etc/hosts915740 -rw-r--r--. 2 root root 158 Mar 25 12:28 /etc/hosts915740 - rw-r--r--. 2 root root 158inode号码 文件的类型 文件的权限.与selinux 有关 文件硬链接数量 主人 家人 文件大小Mar 25 12:28 /etc/hosts文件修改时间 文件名
2.inode与block
引言:获得一个硬盘到可以向硬盘中存放数据:
硬盘(房子),分区(划分隔断),格式化创建文件系统 (装修,不同风格),挂载(安装门窗inode)
2.1inode:index node
1)含义:索引节点:
用来存放文件属性的空间,通过inode 号码找到这个空间的,文件名不存放在inode 中。
inode号码———-家庭住址            inode空间———-家 庭
2)怎么来的:
格式化创建文件系统
3)特点:
- inode 存放文件属性
 - 存放 block 的位置 指向 block 的指针
 - 创建一个文件要占用一个 inode
 - inode 节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
 
硬链接数量:超市入口的数量
- inode 在某一个文件系统(分区),是唯一的。
 
4)怎么用看:
ls    -i (看某些文件的 inode 号码)
df   -i (系统里面 inode 用了多少剩余多少)
[root@oldboyedu oldboy]# ls -lihtotal 40K917220 -rw-r--r--. 1 root root 0 Mar 25 23:16 alex.txt917215 -rw-r--r--. 1 root root 292 Mar 25 22:55 ett.txt917222 drwxr-xr-x. 3 root root 4.0K Mar 26 09:19 ext
[root@oldboyedu oldboy]# df -iFilesystem Inodes IUsed IFree IUse% Mounted on/dev/sda3 1201872 55469 1146403 5% /tmpfs 125514 1 125513 1% /dev/shm/dev/sda1 51200 39 51161 1% /boot
2.2block
1)含义:数据块
block实际存放数据的位置
2)怎么来的
格式化创建文件系统
3)特点
block 是实际存放数据的位置
block 4k(centos 6.x) 1k 8k
创建大文件会占用多个 block, 如果文件很小 1k,4k 剩余的空间会被浪费。
创建一个非空文件要占用一个 inode 和至少 1 个 block
每读取一个 block 就会消耗一次磁盘 I /O input/output 磁盘读写)。
4)怎么用 怎么看
df   -h( 磁盘 block 使用情况)
ls    -lh
[root@oldboyedu ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda3 18G 1.6G 16G 9% /tmpfs 491M 0 491M 0% /dev/shm/dev/sda1 190M 40M 141M 22% /boot
3.磁盘空间不足情况详解
若看见:no space left on device 磁盘空间不足 ,因为 block 满了。
seq 100000000 >/tmp/big        # 写入大文件
第一个里程碑 :看看到底哪里满了
[root@oldboyedu01-nb ~]# df -hFilesystem 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 G1.1G /usr7.4G /var[root@oldboyedu01-nb ~]# du sh /var/*|grep G7.3G /var/log[root@oldboyedu01-nb ~]# du sh /var/log/*|grep G7.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/logsdd if=/dev/zero of=/dev/sdc bs=8K count=10 # 创建一个小小的文件。ls -l /dev/sdcmkfs.ext4 /dev/sdc # 创建文件系统,即格式化。mount -o loop /dev/sdc /app/logs # 挂载[root@oldboyedu logs]# df -h # 查看是否挂载成功。Filesystem Size Used Avail Use% Mounted on/dev/sda3 18G 1.6G 16G 9% /tmpfs 491M 0 491M 0% /dev/shm/dev/sda1 190M 40M 141M 22% /boot/dev/sdc 73K 14K 55K 21% /app/logs # 挂载成功。[root@oldboyedu logs]# df -i # 查看inodeFilesystem Inodes IUsed IFree IUse% Mounted on/dev/sda3 1201872 55475 1146397 5% /tmpfs 125514 1 125513 1% /dev/shm/dev/sda1 51200 39 51161 1% /boot/dev/sdc 16 11 5 69% /app/logs # 16个inode,可用5个
出现状况
[root@oldboyedu logs]# cd /app/logs/
[root@oldboyedu logs]# touch stu{1..6}.log
touch: cannot touch `stu6.log': No space left on device
# 查看block,此时还有空间
[root@oldboyedu logs]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  1.6G   16G   9% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   15K   54K  22% /app/logs
# 查看inode,此时inode已经没有了。
[root@oldboyedu logs]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      1201872 55475 1146397    5% /
tmpfs           125514     1  125513    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot
/dev/sdc            16    16       0  100% /app/logs
# 删除文件,再查看inode
[root@oldboyedu logs]# rm -f *.log
[root@oldboyedu logs]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      1201872 55475 1146397    5% /
tmpfs           125514     1  125513    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot
/dev/sdc            16    11       5   69% /app/logs
4.文件类型及扩展名
文件类型
f     file                    普通文件
d    directory          目录
l     softlink             软链接(快捷方式)
f file普通文件
[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
##二进制文件 命令
[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-n b ~]# file /tmp/etc.tar.gz
/tmp/etc.tar.gz: gzip compressed data, from Unix, last modified: Fri
Oct 20 01:36:16 2017
扩展名-文件后面的小尾巴
windows:windows通过扩展名区分不同类型的文件。
linux:扩展名是用来给我们看的。
.sh           脚本文件(命令大礼包,可以用,可以运行。)
.conf        配置文件
5.Linux用户分类
5.1用户和用户组简介
整体对于一个文件目录来说:用户可以分为 3 类
主人:所有者的名字
家人:所有者属于的组的名字
陌生人
[root@oldboyedu-01 nb ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
#id查询用户信息
#属于哪个用户组
5.2用户分类
UID: user id,用户的 id 号码 身份证号码
GID: group id,用户组的 id 号码 户口本的号码
| 用户 | UID | 
|---|---|
| 皇帝 root | 0 | 
| 傀儡 虚拟用户 | 1-499 系统中每个进程要有一个对应的用户,无法 使用的  | 
| 贫民百姓 普通用户 | 500+ | 
如何保护皇帝
1.禁止 root 远程登录
2.修改 ssh 默认的端口号 22
3.定期分析 /var/log/secure 记录着用户的登录信息
6.rtc-passwd文件详解
与用户有关的文件
/etc/passwd             存放的是用户的信息
/etc/shadow             用户密码的信息
/etc/group               用户组的信息
[root@oldboyedu ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
oldboy:x:500:500::/home/oldboy:/bin/bash
第一列:用户名字
第二列:存放密码的地方
第三列:UID
第四列:GID
第五列:用户的说明信息,默认为空
第六列:用户的家目录
第七列:用户使用的 shell, 用户使用的命令解释 器
/bin/bash------------centos 默认的命令解释器
/sbin/nologin--------用户无法登陆系统,相当于是傀儡用户
7.linux位权限说明与计算
linux基础权限介绍
r        4         read          可以读取文件内容
w       2         write         修改文件内容
x        1         execute     可以运行文件 命令 脚本
-        0                           什么权限都没有
[root@oldboyedu ~]# ls -l /etc/hosts
-  rw-  r--  r--. 2 root root 158 Mar 25 12:28 /etc/hosts
   主人 家人 陌生人  
   420  400  400
    6    4    4
[root@oldboyedu ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23  2017 /bin/ls
 421401401
  7  5  5
8.软链接和硬链接
8.1软链接———windows 快捷方式
符号链接
怎么来的
[root@oldboyedu oldboy]# ln -s oldboy.txt oldboy.txt-soft # 创建软链接。 [root@oldboyedu oldboy]# ls -l oldboy.txt* # 查看 -rw-r--r--. 1 root root 29 Apr 11 14:53 oldboy.txt lrwxrwxrwx. 1 root root 10 Apr 11 19:19 oldboy.txt-soft -> oldboy.txt特点
8.2硬链接
相当于是超市的前后门,通过不同的大门进入超市
在同一个分区中,两个文件或多个文件的 inode 号码相同,这些文件互为硬链接
- 怎么来的
 
ln创建
[root@oldboyedu oldboy]# ls -l oldboy.txt*
-rw-r--r--. 1 root root 29 Apr 11 14:53 oldboy.txt
lrwxrwxrwx. 1 root root 10 Apr 11 19:19 oldboy.txt-soft -> oldboy.txt
[root@oldboyedu oldboy]# ln oldboy.txt oldboy.txt-hard        # 创建硬链接
[root@oldboyedu oldboy]# ls -lhi oldboy.txt*                # 查看inode
917219 -rw-r--r--. 2 root root 29 Apr 11 14:53 oldboy.txt
917219 -rw-r--r--. 2 root root 29 Apr 11 14:53 oldboy.txt-hard
917205 lrwxrwxrwx. 1 root root 10 Apr 11 19:19 oldboy.txt-soft -> oldboy.txt
- 特点
 
1.相当于是超市的前后门,硬链接数量就是超市一共有多少门
2.删除硬链接或源文件,文件还是可以使用的
3.把硬链接和源文件都删除,文件被删除 硬链接数量为 0
8.3软链接和硬链接的区别
描述 linux 下软链接和硬链接的区别(面试题)
解答:
1) 如何创建:
a) 默认不带参数情况下, ln 命令创建的是硬链接,带 -s 参数的 ln 命令创建的是软链接。
2) 含义:
a) 硬链接文件与源文件的 inode 节点号相同,而软链接文件相当于 windows下面的快捷方式( inode 节点号与源文件不同)
3) 特点:
a) 不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到
b) 软链接可以跨文件系统,硬链接不可以跨文件系统。
4) 怎么没的(源文件,软链接,硬链接与删除)
a) 除软链接文件 对源文件及硬链接文件无任何影响;
b) 除文件的硬链接文件,对源文件及软链接文件无任何影响;
c) 除链接文件的源文件 ,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
d) 删除源文件及其硬链接文件,整个文件才会被 真正 的删除
9.文件删除原理
某个文件没有被彻底删除,导致的磁盘空间满了。
模拟思路
向/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]# 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 `/p
roc/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
[root@oldboyedu01-nb o ldboy]# 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
10.磁盘空间不足总结
11.linux修改、访问、改变时间简介
mtime         modified time        文件的修改时间 文件内容的变化时间
ctime          change time          文件属性的改变时间 硬链接数量 文件大小 文件权限
atime          access time            文件的访问时间 cat
[root@oldboyedu ~]# cd /oldboy/
[root@oldboyedu oldboy]# ls -l oldboy.txt
-rw-r--r--. 2 root root 29 Apr 11 14:53 oldboy.txt
[root@oldboyedu oldboy]# stat oldboy.txt                # 查看mtime,ctime,atime
  File: `oldboy.txt'
  Size: 29            Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d    Inode: 917219      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-11 14:53:25.159999113 +0800
Modify: 2020-04-11 14:53:07.892993990 +0800
Change: 2020-04-11 19:23:07.282989279 +0800
[root@oldboyedu oldboy]# echo hello >>oldboy.txt        # 更改文件再查看mtime,ctime,atime
[root@oldboyedu oldboy]# stat oldboy.txt        # 注意:由于文件大小也改变,所以mtime,ctime都发生变化
  File: `oldboy.txt'
  Size: 35            Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d    Inode: 917219      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-11 14:53:25.159999113 +0800
Modify: 2020-04-11 20:10:15.263963946 +0800
Change: 2020-04-11 20:10:15.263963946 +0800
[root@oldboyedu oldboy]# ln oldboy.txt oldboy.txt-hard        # 创建硬连接再查看mtime,ctime,atime
ln: creating hard link `oldboy.txt-hard': File exists
[root@oldboyedu oldboy]# stat oldboy.txt
  File: `oldboy.txt'
  Size: 35            Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d    Inode: 917219      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-11 14:53:25.159999113 +0800
Modify: 2020-04-11 20:10:15.263963946 +0800
Change: 2020-04-11 20:10:15.263963946 +0800
[root@oldboyedu oldboy]# cat oldboy.txt                        # 查看文件再查看mtime,ctime,atime
I am oldboy,myqq is 31333741
hello
[root@oldboyedu oldboy]# stat oldboy.txt
  File: `oldboy.txt'
  Size: 35            Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d    Inode: 917219      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-11 20:11:35.951991033 +0800
Modify: 2020-04-11 20:10:15.263963946 +0800
Change: 2020-04-11 20:10:15.263963946 +0800
                    
