linux文件种类和目录配置
一、文件种类
1)-,常规文件(regular file)
-* 纯文本文件(ASCII):就是我们人类使用的文件
-* 二进制文件(binary):可执行文件一般是二进制文件
-* 数据文件(data):某些程序运行过程中会产生特定格式文件,这些文件就可以称之为数据文件
2)d,目录(directory)
就是类似于文件夹,或者现实中的文件柜
3)l,链接文件(link)
4)b&c设备与设备文件(device)
b,区块设备文件(block):第一个属性对应是b。比如硬盘,我可以随机读取的接口设备,随机在不同区块读写
c,字符(character)设备文件:第一个属性对应是c。比如键盘,鼠标,通过串行接口连接,数据不能够截断。
5)数据接口文件(sockets)
s,既然是数据接口文件,肯定常出现在网络上的数据交换了
6)数据传输文件(FIFO,pipe)
p,特殊类型的数据类型,主要解决多个程序同时读取一个文件的错误问题,FIFO是first-in-first-out的缩写,即管道
二、文件扩展名
* 补充:再次重申,文件的扩展名在Linux下只是用来标识文件类型,至于能够执行关键是看有没有权限,当然真正能运行起来的前提是文件是可执行文件,比如:ASCII文件就算有执行权限也无法执行成功。
常用的后缀,自己到时候就知道了,它和windows下的不一样
1,rwx,代表用户|用户组成员|others对文件的权限,x就代表我能够执行它,至于文件到底能不能执行,这不是我管的了,win下一般可执行的文件都是.exe .com .bat结尾的吧,我们linux是否可执行和扩展名没什么关系,要看权限是不是给到了。
有时候网上下的可执行文件在自己的电脑上不能执行,可以考虑是不是自己的权限不够,尝试查看或修改权限
2,最长文件名255字节,汉字的话大概128字以内,pathname包含文件路径+文件名+扩展名
三、文件目录
标准:FHS
1,四种类型|四种交互形态:根据文件系统 使用的频繁程度 与 是否允许用户随意修改 划定
#可分享:可以分享给其他系统挂载使用的目录
#不可分享:自己机器上运行的设备文件或是socket文件等,自己机器上的当然不能分享
#不变:数据不会经常变动,比如函数库,文件说明等
#可变:经常修改的数据,比如日志文件等
2,针对目录树,FHS定义了三层目录,分别是/根目录,和目录次/usr /var
(1)/根目录的意义和内容
#根目录是整个系统最重要的一个目录,所有其他目录都在根目录下,同时也与系统的修复,启动,还原有关,根目录下必须包含能够修复文件系统的程序。
而且,根目录越小越好避免存放其他数据,安装的应用程序也最好不要直接安装在根目录下也就是不跟根目录放在同一个分区。
* FHS规定/目录下应该要有下面这些子目录才好,即使没有物理目录,FHS也希望至少有个链接目录的存在:
/bin:(binary)执行文件存放的目录,但是/bin比较特殊,因为/bin下存放是在单人维护模式下还能够使用的命令,在/bin下的命令能够被root账号和普通账号使用,比如一些常用的命令。
/boot:启动会用的文件,包括linux内核文件和启动选项及所需的配置文件。linux内核常用的文件名:vmlinuz。顺便一提,grub2是一个启动引导程序
/dev:(device)设备文件,每一个设备都是文件,反之我们对/dev下的某个文件进行操作就等于读写某个设备。
/etc:(etc)系统主要的配置文件:人员的密码账号,各种服务的启动服务等,一般来说,一般用户可查看,但是只有root才能修改。最好不要放置可执行binary文件在这里
/lib:(library)一:启动时会用到的或者/bin和/sbin下的命令执行时需要调用的函数库;二:驱动程序(可抽换式的内核相关模块)
/media:媒体,可删除/移除的设备,比如光盘
/mnt:(mount)暂时用来挂载,因为有了/media,所以/mnt暂时用来挂载
/opt:第三方辅助软件放置的目录,就是安装发行版提供的软件,就是放到这个文件夹,如果是自行安装的文件,也就是发行版没有提供的软件,我们一般放在/usr/local
/run:系统启动后跑出来的各项信息要放置在/run下,因为/run可以模拟内存,所以速度会好很多
/sbin:linux下有很多命令是设置启动环境的,只有root才可以使用。里面包含了启动,修复,还原系统所需要的命令
/srv:可以看做service的缩写,网络服务所需要的数据目录
/tmp:让一般用户或是执行程序暂时存放数据的地方
/usr:第二层FHS规定的次目录
/var:第二层FHS规定的次目录
#FHS建议可以有也可以没有的目录
/home:家目录。~,代表目前用户的家目录。~Jerry,代表Jerry的家目录
/lib<qual>:放置于/lib格式不同的二进制函数库
/root:系统管理员的家目录,当仅挂载根目录的时候,就会有root权限,因为我把root家目录放到根目录下了也就是用一个分区,是不是很方便。补充:因为在恢复模式一般只能加载根目录,所以直接把root的家目录直接放到根目录下就会很方便。
#其他重要的目录:
/lost+found:私用标准ext2,ext3,ext4文件格式才有的目录,文件系统发生错误时一些遗失的片段会放到这里。当然用xfs就没有这个目录
/proc:虚拟的文件系统,数据都放在内存里,系统的内核,进程process,外接设备的状态,网络状态等
/sys:同样也是虚拟的文件系统,数据都放在内存里,内核和系统硬件相关的内容。
如今恢复模式能够同时挂载根目录和usr,所以在centos7.x就把sbin,bin,lib通过链接的方式放到usr下面
总结:根目录下面目录分类:
1. 命令:
/bin
/sbin
2. 函数库
/lib
/lib<qual>
3. 设备
/dev
/media
/mnt
4. 运行1
/boot 内核
/opt 第三方软件
5. 运行2
/etc 系统主要的配置文件
/srv service,一些网络服务启动之后, 这些服务所需要的数据目录,比如加载网页数据
/run 运行产生的各项信息
/tmp 临时放置文件的地方,任何人都能存取,但是很多时候就会被清除掉
6. 内存相关
/proc (process)
/sys
我们可以看到根目录和系统最基本的息息相关,都是最基本的。从centos7开始的变动如下
/bin -> /usr/bin
/shin -> /use/spin
/lib -> /use/bin
/lin64 -> /use/lib64
/var/lock -> /run/lock
/var/run -> /run
其中->表示链接的意思,左面的均是链接文件而已,真正的物理文件是后面的。
(2)usr的意义和内容
#usr,uinx software resource的缩写,也就是操作系统软件资源放置目录。有点像win下面的programfiles这个文件夹,在此重申一下,这个不是user
#必须有的目录
/usr/bin/:一般用户能够使用的命令。centos把用户命令全部放置在这里。使用链接文件的方式把/bin链接于此,所以和bin是一模一样的
/usr/lib/:函数库,/lib就是链接于此的。
/usr/local/:本机安装的软件,就是自己下的最好安装到此目录
/usr/sbin/:非系统正常运行时使用的命令,目前/sbin就是链接到此目录的。
/usr/share/:主要放置只读的文件,当然包括共享文件。几乎都是文本文件。/usr/share/man/ 在线帮助文件、/usr/share/doc说明文档、/usr/share/zoneinfo时区文件
/usr/games/:游戏相关
/usr/include/:c/c++的头文件header和包含文件include放置处
/usr/libexec/:不被一般用户使用的可执行文件或脚本文件(scipt)
/usr/lib<qual>:lib<qual>就是链接到此的。不同于lib的二进制函数库
/usr/src/:一般源代码,source
总结:基本和软件有关,unix software resource
(3)/var的意义和内容
#/usr安装是会占用较大的内存,/var是系统运行时才会渐渐占用硬盘容量,针对经常变动的文件,比如:缓存,日志文件,以及软件运行产生的文件等
/var/cache/:程序产生的缓存
/var/lib/:程序执行中需要的数据文件的放置目录,一般每个程序都有单独的一个目录
/var/lock/:某些设备一次只能有一个程序使用,这个就是给设备上锁的,目前挪到了/run/lock中,因为跟程序运行相关啊
/var/log/:重要到不行,日志文件啊。
/var/mail/:个人邮箱
/var/run/:某些程序或服务运行后他们的PID会放到这里
/var/spool/:队列数据,排队等待其他程序使用的数据。
总结:
/根目录,经常是跟系统启动修复之类有关,内核,驱动,root和root命令都放在这里。
/usr,主要是自己安装软件的目录,也就是软件资源放置目录。有点像win下面的programfiles这个文件夹
/var,variable(可变的)系统运行时才会渐渐占用硬盘容量,针对经常变动的文件,缓存,日志文件,以及软件运行产生的文件等
root有两种含义,一是:根目录;二是:超级管理员,看什么语境了
# 目录树
* 以/根目录为起始点的,形成树状结构,每一个目录都是可循的,每一个目录不止能使用本地的文件系统,而且能够使用网络上的文件系统
# 回顾前面🐦哥的分区,想法:
/biosboot 标准分区 2M
/boot 标准分区 1G
/ LVM格式 10G
/home LVM 5G
/swap LVM 1G
至于biosboot,我们目前有UEFI Bios搭配GPT格式的硬盘启动,bios就是写到flash上的一段读取引导程序的可执行程序,UEFI要更加复杂
/boot放置启动时会用到的文件,包括内核和启动选项(MBR的m1和m2,设置启动程序选项),以及启动所需要的配置文件。1G很合理
/home,家目录,5G感觉比较合理,我毕竟也不放什么东西啊