3.18 课堂笔记

软硬连接及文件删除原理

文件属性

[root@oldboyedu ~]# ls -lhi

total 32K

33631870 -rw-r--r--. 1 root root      4 Mar 13  2019 a.txt

一第二列结尾的. 是标识selinux的符号

1、selinux是什么?

安全规则,让Linux系统更安全的一套规则。

这个规则太严格了,一般的情况下都会关闭selinux。

自己开启防火墙啊,用其他手段来实现同样的安全目的。

2、怎么关掉Selinux?

查看方法:

getenforce

临时关掉:

setenforce

永久关闭:

vim /etc/selinux/config

SELINUX=disabled

Linux里防火墙

C6 iptables  C7 firewalld

作用:防护计算机,防止被入侵。

检查:systemctl status firewalld.service

开启firewalld(C6 service iptables start 或者/etc/init.d/iptables start)

systemctl start firewalld.service

让firewalld开机自启动

systemctl enable firewalld.service

C6用法:chkconfig iptables off

C7就是一个命令systemctl

二.第三列 硬连接数

[root@oldboyedu ~]# ls -lhi

total 32K

33631870 -rw-r--r--. 1 root root      4 Mar 13  2019 a.txt

                  硬链接数

1、什么是硬链接?

具有相同inode节点号的文件互为硬链接。

一个文件的两个入口。

2.测试

创建硬链接:

ln 源文件 硬链接文件

a.文件硬链接

[root@oldboyedu /data]# echo "I am oldboy." >oldboy.txt

[root@oldboyedu /data]# ln oldboy.txt oldboy_hard_link

[root@oldboyedu /data]# ls -lirt

total 20

33656238 -rw-r--r--. 2 root root  13 Oct  4 21:10 oldboy_hard_link

b.目录硬链接

不支持人工创建目录硬链接。

[root@oldboyedu /data]# ln oldboy oldgirl

ln: ‘oldboy’: hard link not allowed for directory

作用:

1、备份,防止误删。

软链接:

本质是快捷方式,指向源文件实体,本身和源文件是不同的文件。

工作中为什么会使用软链接。

第一个用途:

安装软件:/application/nginx-1.10

过半年:/application/nginx-1.20

导致一个问题,工作中,开发等引用/application/nginx-1.10路径。

安装软件:/application/nginx-1.10===>/application/nginx(让开发用)

过半年:  /application/nginx-1.20===>/application/nginx(让开发用)

第二个用途:

/etc/对应的分区要满了,没法放很多文件,但是程序还想通过/etc/目录访问文件。

此时,我们可以把文件放入/opt/oldboy下,然后做一个到/etc/oldboy的软链接。

三.软链接和硬链接的区别?

1.定义不同。软连接类似于快捷方式,硬链接与原文件有相同的inode可以指向数据block

2.创建方式不同。硬链接:ln[原文件];软连接:ln -s[原文件]

3.创建对象不同。软连接可以跨越文件系统,对目录和客户创建的文件软连接,硬链接则不能

4.删除软连接文件。对原文件和硬链接无影响

5.删除文件硬链接。对原文件和软链接文件无影响

6.删除原文件。对硬链接读取数据无影响,软连接则失效

7.同时删除原文件和硬链接。原文件会被删除

8.硬链接原理类似于快照

四.Linux文件删除原理:

1、静态文件:没有进程或程序正在访问的文件。

所有的硬链接数为0(i_link),即所有硬链接都被干掉了,包括自身。

硬链接的数量的代表变量符号i_link

rm -f oldboy.txt oldboy_hard_link

执行完 其实文件也没删,关机停止运行。

a.系统定时清理没有文件名的inode。

b.磁盘检查会清理。

c.增加新文件时优先占用没有文件名的inode。

恢复的工具:debugfs,ext3grep等等。

预防误删

多备份,操作前备份,异服务器和异地备份。

2、动态文件:有程序或进程访问的文件

删除原理:

a.i_link为0    所有硬链接删除。

b.i_count为0  i_count是进程调用文件的数量(引用计数)。所有进程调用都要停止取消。

3、实践文件删除原理

环境准备,命令集合如下:

mkdir -p /app/logs                          #<==创建用于挂载的目录。

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

mkfs.ext4 /dev/sdc                          #<==格式化。

mount -o loop /dev/sdc /app/logs            #<==挂载。

df -h                                        #<==检查挂载结果。

实践:

[root@oldboyedu /data]# cd /app/logs/

[root@oldboyedu /app/logs]# touch nginx.log

[root@oldboyedu /app/logs]# tail -f nginx.log

[root@oldboyedu /app/logs]# cat /etc/services >>nginx.log

cat: write error: No space left on device

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M  80K  980M  1% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  9.5M  981M  1% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

/dev/loop0      73K  71K    0 100% /app/logs

明明删除了,结果还是100%。

[root@oldboyedu /app/logs]# rm -f nginx.log

[root@oldboyedu /app/logs]# lsof|grep nginx

tail      7927        root    3r      REG                7,0    57344        12 /app/logs/nginx.log (deleted)

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M  80K  980M  1% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  9.5M  981M  1% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

/dev/loop0      73K  71K    0 100% /app/logs

重来:

模拟进程读文件:

[root@oldboyedu /app/logs]# touch nginx.log

[root@oldboyedu /app/logs]# tail -f nginx.log

ln nginx.log nginx_hard.log

当前:

i_link=2

i_count=1

模拟把文件变大,让分区满

[root@oldboyedu /app/logs]# cat /etc/services >>nginx.log

cat: write error: No space left on device

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M  80K  980M  1% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  9.5M  981M  1% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

/dev/loop0      73K  71K    0 100% /app/logs

分区满了:清理,删除。

删除源文件

[root@oldboyedu /app/logs]# rm -f nginx.log

结果:

i_link=1

i_count=1

ctrl+c 中断 进程调用文件

结果:

i_link=1

i_count=0

删除硬链接文件

[root@oldboyedu /app/logs]# rm -f nginx_hard.log

结果:

i_link=0

i_count=0

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M  80K  980M  1% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  9.5M  981M  1% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

/dev/loop0      73K  14K  54K  21% /app/logs

五.通配符知识:

1、基本含义

通配符简单说就是键盘上的一些特殊字符,可以实现某些特殊的功能,

例如,可以用*代表所有,来模糊搜索系统中的文件。

2、范围:通配符试用范围是命令行中【普通命令】或脚本编程中。

你可能感兴趣的:(3.18 课堂笔记)