day 13
第九章 Linux核心属性知识(下)
老男孩思想之优秀的运维习惯
1、内容尽量复制,以减少错误。
2、操作前备份,操作后检查。
3、使用中记忆。
-------上节内容补充
文件属性
文件权限结尾的 “.”是标识selinux的符号
1、seLinux是什么?
安全规则,让Linux系统更安全的一套规则。
这个规则太严格了,一般的情况下都会关闭selinux。
2、怎么关掉seLinux?
临时关闭: setenforce 0
永久关闭:vim /etc/selinux/config
SELINUX=disabled
********************************************************************************************************************
1.1、硬链接数属性
1.1.1、什么是硬链接
具有相同inode节点号的文件互为硬链接
一个文件两个入口(inode在某一个文件系统内是唯一的)
1.1.2、硬链接的原理
两个文件名指向的是硬盘的同一块存储空间,对文件中的任何一个文件内容进行修改都会影响到另一文件。
aa硬链接数为 1 aa bb 硬链接数都为 2由上图可以看出aa,bb大小相同,如果此时修改aa,bb任意一个文件内容,另一个文件内容已将随之变化,如果删除其中一个文件(不管哪一个),就是删除了该文件和硬盘空间的指向关系,该硬盘空间不会释放,另一个文件内容也不会发生改变,但是该文件的链接数会少一个。
(说明:只能对文件创建硬链接,不能对目录创建硬链接)
1.1.3、创建硬链接作用
作用:备份,防止误删。
目录硬链接:不支持人工创建硬链接
1.2、软链接属性
1.2.1、什么软链接
是指一个文件指向另外一个文件的文件名。软链接类似于Windows系统中的快捷方式。软链接是由 ln -s命令建立。
1.2.2、软链接原理
aa 的软链接数为 1 aa 文件的链接数仍为 1由上图可看出cc文件是指向aa文件的一个符号链接。而指向存储aa文件内容的那块空间的文件仍然只有aa一个,cc文件只不过是指向了aa文件名而已。所以aa文件的链接数仍为1。 在利用cat命令查看cc文件内容时,发现cc是一个符号链接文件,就根据cc记录的文件名找到aa文件,然后将aa文件的内容显示出来。
此时如果删除了cc文件,对aa文件无任何影响,但如果删除了aa文件,那么cc文件就因无法找到aa文件而毫无用处了。
(说明:可以对文件或目录建立软链接)
1.2.3、工作中为什么会使用软链接
第一个用途:
安装软件:/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.3、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是进程调用文件的数量(引用计数),所有进程调用都要停止取消 i_count为0。
3、文件删除原理
分区满了,要清理、删除
要结束调用的进程,然后在删除硬链接文件
第十章 Linux通配符与特殊符号知识应用实践
1.1、通配符
通配符简单来说就是键盘上的一些特殊字符,可以实现某些特殊的功能。利用通配符能提高工作效率。
1.1.1、通配符集合。
工作中常用的通配符:
*:匹配任意(0个或多个)字符或字符串。
?:匹配任意一个字符,有且只有一个。
[abcd]:匹配abcd中任何一个字符,abcd 可以是任意不连续字符。
[a-z]:匹配a-z之间任意一个字符,字符前后连续 ,也可是[0-9]。
[!abcd]:表示不匹配括号里的任意字符,这里的“!”可以用“^”代替。
(注:同一个符号可能有多种不同的含义,含义不同功能不同结果不同)
特殊符号集合:
路径与位置相关: “~”,“-”、“.”,“..”,这四个符号含义与在cd下一样,不赘述了。
引用字符串命令相关:
'':单引号,所见即所得,即原样输出。
"":双引号,输出内容时,如果内容中有特殊含义的字符时要转义。
``:反引号,用于执行命令,相当于$()。
其他特殊字符:
;:表示一个命令的结束,命令分隔符。
#:注释 (也可以是命令提示符)。
|:表示管道。
$:引用变量 去变量的值或普通用户的命令提示符。
\:转义符号或者屏蔽别名。
{}:生成序列。
&:将程序放入后台运行符。