用ls -l来查看详细信息时,第一个字符:
d:代表这是一个目录。
-:代表这是一个文件。
l:代表这是一个链接文件。
然后三个为一组rwx,分别代表可读,可写,可执行。
第一组为文件拥有者的权限。
第二组为加入此用户组的账号的权限。
第三组为其他人的权限。
但目录与文件的权限意义不同。
目录里面存的是文件名。
目录的w权限非常重要。
如果用户在这个目录里面有w的权限,就可以在这个目录里删除文件,新建文件等等.
之后的数字代表有多少个文件名链接到此节点(inode)
文件的权限也可以用数字表示:r为4,w为2,x为1
用法:chmod 【-R】 xyz 文件或目录
选项与参数:
-R:就是进行递归修改,即连同子目录下的所有文件都会修改
xyz:就是数字,但是是一组rwz数字相加
chmod 777 .bashrc
意思就是修改.bashrc这个文件的权限为rwxrwxrwx
也可以用字母的方式:
文件拥有者:user 简写为u
加入此用户组的账号:group 简写为g
其他人:other 简写为o
chmod u=rwx,g=rx,o=rx .bashrc
用法:chown 【-R】 账号名称 文件或目录
或 chown 【-R】 账号名称:用户组名称 文件或目录
-R:递归修改,即将子目录下的所有文件都修改
chown MyUbuntu .bashrc
chown MyUbuntu:MyUbuntu .bashrc
用法类似
chgrp MyUbuntu .bashrc
由于开发Linux发行版的社区和公司很多,而每个Linux的目录里面放置的文件都不一致,所以为了规范那个目录里放那些文件,就有了FHS标准。
以根目录开始的为绝对路径
相对于目前路径的写法,就是相对路径,反正不从根目录开始的都为相对路径.
目录的相关操作:
. 代表此层目录
… 代表上一层目录
– 代表前一个工作目录
~ 代表当前使用者身份所在的家目录
~account 代表account这个使用者的家目录
切换目录:cd
显示当前目录:pwd
建立一个新目录:mkdir
删除一个空目录:rmdir
删除文件或目录:rm
rm -i [文件名] 交互模式,删除时会询问是否要删除
rm -r [目录名] 递归删除,常用于目录的删除.
复制文件或目录:cp
移动文件或目录:mv
修改文件时间或创建新文件:touch
文件内容的查看:
cat:从第一行开始显示文件内容
cat -n 打印出行号
tac:从最后一行开始显示文件内容
nl:在显示的时候同时输出行号
与cat -n 不同的是nl可以对行号做更多的细节内容比如是否补零,行号的宽度等.
more:一页一页的显示文件内容
less:与more类似,但是它可以往前翻页
head:只看前面几行
tail:只看后面几行
od:以二进制的方式读取文件内容
文件默认权限是:-rw-rw-rw-
目录默认权限是:drwxrwxrwx
在命令行输入:umask会出现:0022
umask是默认权限减去那个权限才是最终的权限
所以建立文件时:文件的权限为:-rw-r–r--
目录的权限为:drwx-r-xr-x
设置umask:
例:umask 002 即可
查看文件隐藏属性:lsattr
设置文件隐藏属性:chattr
文件隐藏属性最重要的就是:
i 表明这个文件不能被删除,改名,写入数据,设置链接. 对于系统安全性很重要.
a 表明这个文件只能新增数据不能删除也不能修改数据,对于日志文件很重要.
但是chattr 只有在ext2,ext3,ext4的linux传统文件系统上才完全生效.其他的文件系统例如xfs仅支持部分参数.
chattr 用法:
+代表新增某个特殊属性
– 去掉某个特殊属性
= 直接设置特殊属性
例如: chattr +i [文件名]
使用方法:file [文件名]
脚本文件的查找:which或type,显示命令的完整文件名.
which ls
/bin/ls
文件的查找:
whereis 只从特定目录中查找,速度快,但可能查不到.(显示文件名)
locate 从数据库中查找,速度快,(当做关键字,完整文件名包括路径名称中有这个关键字的都列出来),但如果是刚建的文件会显示找不到,因为数据库还没有更新,数据库的更新时间每个发行版不同,centos是一天,也可以手动更新数据库,方法直接输入:updatedb
find 从整个文件系统中查找,速度慢,对磁盘性能有影响,不很常用.
两者的一个区别是:ext系列对于大容量的硬盘,格式化非常慢,因为他的设计是在格式化时分配好所有的inode和区块。
而xfs是在需要时才动态分配inode和区块。这样格式化时就比较快。
在ext系列文件系统中每一个文件都有inode和数据区块(1K,2K,4K), inode是存放文件属性和权限和数据区块的号码的地方, 数据区块是存放实际数据的地方. 一个文件只占一个inode,inode大小为128B或256B, 但是inode记录一个数据区块就有4B, 所以系统将inode记录区块号码的区域定位为12个直接, 一个间接, 一个双间接, 一个三间接.
可以有多个数据区块, 如果存不下会用多个区块.
ext文件系统还有超级区块(super block),存放的是整个文件系统的信息包括还有多少剩余inode和区块等。
ext文件系统还有区块对照表:显示那个区块是空的,那个是已使用的.
ext文件系统还有区块群组:每个区块群组都有inode和数据区块,有的还有超级区块,但是这个超级区块是文件系统超级区块的备份,防止超级区块故障,可以快速恢复.因为一个文件系统只有一个超级区块.
ext文件系统还有inode对照表:显示哪个inode是空的,哪个inode是已经使用的.
因为有可能在你修改一个文件时,在它还没有同步更新到inode对照表和区块对照表时断电了,这就会导致数据的不一致状态,在ext2文件系统中,这就会借助超级区块的信息来查找整个文件系统进行比对.非常耗时.所以就有了后来的日志式文件系统的兴起.
ext3和ext4文件系统为日志式文件系统,为了解决数据的不一致状态,所以采用用一个区块来记录我们对文件的操作,所以当产生数据的不一致状态后,直接通过这个区块,就可以找到是那个文件有问题,然后只比对这一个文件就可以恢复了,而不用对整个文件系统进行检查.
还有一个问题是:所有的数据都要加载到内存中才能被CPU处理.
那么如果我们在编辑一个大文件,这个操作又需要系统频繁的把数据写入到磁盘,而磁盘的速度比内存的速度慢的多,所以我们要耗费时间在等待磁盘的读取中.
为了解决这个问题,Linux使用的方式叫做:异步处理.就是当一个文件加载到内存后,如果这个文件没有被修改过,就被标记为clean,如果被修改过就被标记为dirty,而系统会不定时的会将内存中标记为dirty的文件写入到磁盘中.你也可以手动用sync命令来把内存中的数据写入到磁盘中.另外在关机时系统会调用sync命令来写入到磁盘中,但如果不正常关机,由于内存中的数据还没有写入到磁盘中,所以重新启动后会花很多时间在进行磁盘校验,甚至可能会导致文件系统的损坏(非硬盘的损坏).
因为内存的速度比磁盘的速度快的多,所以Linux系统会把一些常用的文件数据放置到内存的缓冲区,来加速文件的读写操作.所以Linux的文件系统与内存有很大的关系,所以Linux的内存最后都会被用光,这是正常的,用来加速系统性能.
xfs文件系统在数据的分布上,主要规划为三个部分,一个是数据区,一个是文件系统活动登录区,一个是实时运行区.
数据区和ext文件系统差不多,都有inode区块和数据区块和超级区块.
不同的只是inode和数据区块是在需要时才动态分配产生,所以格式化很快.
文件系统的活动登录区:在登录区这个区域主要被用来记录文件系统的变化,其实有点像是日志区.文件的变化会在这里记录下来,知道该变化完整的写入到数据区后,该条记录才会被结束.如果文件系统因为断电而损坏时,系统会拿这个登录区块来进行检验.
实时运行区:当有文件要被建立时,xfs会在这个区段里面找一个到数个的extent区块,将文件放置在这个区块内,等到分配完毕后,在写入到数据区的inode和数据区块中.