Linux文件系统构建介绍
对往Linux方向发展的运维工程师来说,或者对于需要用到Linux系统进行产品测试,售前,售后工程师可能对于Linux文件系统结构还比较陌生,不了解每个目录用来存放什么程序,哪些是程序文件,哪些是系统目录;相信看完这篇博客,能够揭开心中的疑惑;
1.目录结构:
1.1:树形目录
Linux系统设计最优秀的特征之一就是将所有内容都以文件的形式展现,通过一个树形结构统一管理,组织文件,如下图所示:Linux树形结构图;
(树形目录图)
从图中可以看出,整个文件系统类似于“树根”,简称”根“目录(root),整个根上面分出了许多“树杈,简称杈”,【杈:系统生成或自定义创建目录】每个“杈“下有分出了”杈“,意思就是说每个”杈“下面还可以继续分”杈“,当然,”杈“上面可以生出”叶子“【叶:可以创建目录和存放文件】
整个系统以文件形式全部存放在根目录,同时将所有文件进行分类,分级分层进行组织,形成一个树形目录结构,给管理文件带来许多便利;
2:目录功能
大部分Linux发行版本基本上遵循FSSTND标准【Linux文件系统目录布局,全名为 File System STaNDard】,例如Centos,Red Hat,Ubuntu,Debian,Kali等等,FSSTND标准的特点主要体现在根目录非常简洁,只包含系统最基本的文件,有利于程序的编写,移植,系统管理,维护等;
2.1:/etc目录
etc目录位于/“根”目录,主要存放与系统管理相关的配置文件和子目录,比较重要的有系统初始化文件/etc/rc,用户信息文件/etc/passwd等等,网络配置,服务启动配置文件也在/etc目录中;
2.1.1:/etc目录文件作用详细介绍
文件名称 / 目录名称 | 主要作用 / 详细信息 |
---|---|
passwd | 用户库文件,每一个用户的用户名,UID,GID,工作目录都存放在此目录 |
shadown | 存放用户密码文件,每个用户的密码加密后存放在此目录 |
group | 主要存放用户组信息 |
fstab | 系统开机启动自动挂载分区列表,需要设置开机自动挂载的分区,可以在此文件中编写加入 |
systemd | systemd是Centos7版本之后的新增目录,用于完成整个系统的基本初始化配置 |
hosts | 设定自己IP与主机名的对应表,类似于Windows系统中C盘windows/System32/dirvers的Host文件 |
resolv.conf | 客户端DNS配置文件 |
sysconfig/network-scripts/ifcfg-eth0 | sysconfig:系统配置,network-scripts:网卡配置文本存放目录,ifcfg-eth0:eth0为网卡标识,网卡名称 |
Xll | X-Windows 配置文件 |
rsyslog.conf | 系统日志输出配置文件,5.x版本之前对应的文件是syslog.conf,6.x版本对应文件是rsyslog.conf |
crontab | 系统级别守护进程配置文件 |
sysctl.conf | 系统内核参数配置文件,7.x版本之后,内核参数配置文件移动到了/usr/lib/sysctl.d目录,不过sysctl.conf配置文件同样生效,可以覆盖/usr/lib/sysctl.d文件中的配置 |
services | 定义系统服务与端口的对应关系 |
profile | 系统全局环境变量配置文件 |
2.2:/usr目录
/usr目录用于存放应用程序,文件。例如我们在系统安装时选择了许多软件包,这些软件包默认的安装目录是在/usr目录,通常/usr目录比较大,按照一些软件默认也会安装在/usr目录,类似于我们在Windows在装应用,默认在C:\Program Files;
2.2.1:/usr目录文件作用详细介绍
文件名称 / 目录名称 | 主要作用 / 详细信息 |
---|---|
lib64 与 local /lib64 | 64位操作系统中的函数库目录 |
src | 包含所有程序的源代码,主要以Linux核心程序源代码为主 |
local | 存放本地安装的软件和其他文件,与系统没有关联 |
bin 与 local /bin | 可执行二进制文件目录 |
lib 与 local /lib | 32位操作系统使用的函数库目录 |
sbin 与 local /sbin | 存放系统管理员与超级用户所执行的命令,普通用户及应用用户没有权限执行 |
include | C语言的头文件,文件拓展名基本上.h |
share | 存放共享文件或目录,以及数据库,类似于Windows 网络共享 |
2.3:/var目录
/var用于存放系统运行,软件运行的日志信息
2.3.1:/var目录文件作用详细介绍
文件名称 / 目录名称 | 主要作用 / 详细信息 |
---|---|
log | 存放各种应用程序的日志文件,(经常变动,需要定期清理) |
lib | 存放系统正常运行时需要改变的库文件 |
spool | maill,new,打印机队列和其他队列输入,输出缓冲命令 |
tmp | 存放比/tmp更大的危机 |
lock | 存放被锁定的文件,大部分文件会在/var/lock产生锁文件,确保其他程序不会同时使用这个设备 或文件,类似占用 |
local | 存放目录中所安装程序的可变数据 |
account | 存放已经格式化的man页【man页:在线帮助,man page】 |
run | 下次启动系统前的系统信息 |
2.4:/dev目录
/dev目录包含系统所有的设备文件信息
2.4.1:/dev目录文件作用详细介绍
文件名称 / 目录名称 | 主要作用 / 详细信息 |
---|---|
fd* | 软盘设备,fd0为第一个软盘设备,fd1代表第二个软盘设备 |
audio* | 声卡设备 |
hd* | IDE硬盘设备,hda为第一块ide硬盘,hdb代表第二块ide硬盘,通过此方法类推 |
sd* | SCSI设备,sda为第一块scsi硬盘,sdb代表第二块scsi硬盘,以此类推 |
lp* | 并行接口 |
pty* | 网络中登陆的远程终端设备 |
ram* | 系统内存 |
ttyS* | 串行接口,ttys0代表串行端口1,ttys1代表串行端口2,类似Windows系统中的COM1,COM2接口 |
Console | 系统控制台,也可以理解为桌面控制台,可直接连接到显示器 |
null | 输出空设备 |
tty* | 虚拟控制台,tty1代表第一个虚拟控制台,tty2为第二个虚拟控制台,Linux一共有6个虚拟控制台, |
2.5:/proc目录
/proc是一个虚拟目录,目录中的所有信息,包括目录都是通过内存映射,通过虚拟的内存映射目录可以和内核内部数据结构进行交互,获取关于进程的信息,同时可以在系统运行时修改内核参数,/proc与其他的目录不一样,它在内存中,而不是在硬盘
2.5.1:/proc目录文件作用详细介绍
文件名称 / 目录名称 | 主要作用 / 详细信息 |
---|---|
cpuinfo | CPU详细信息,CPU名称,型号,类型 |
meminfo | 内存信息,物理内存与虚拟内存 |
filesystems | 系统支持的文件和文件系统类型 |
device | 内核中设备驱动程序列表 |
net | 网络协议和状态信息 |
dma | 当前使用的dma通道【直接存储器存取,全名为Direct Memory Access】 |
ioports | 当前使用的 I/O 端口 |
modules | 当前系统加载的内核模块信息 |
stat | 系统的各种状态信息 |
uptime | 系统总启动时间和空闲时间,基本上以秒为单位 |
version | 内核版本信息 |
loadavg | 系统平均负载 |
kcore | 系统内存映像,与物理内存大小一致,实际不会占用这么大的空间 |
kmsg | 内核输出信息,被输出到rsyslog |
2.6:其他目录
- /boot目录:存放Linux启动时核心文件,例如:镜像文件,链接文件;较重要,遭到破坏或者黑客攻击将无法启动系统;
- /bin与sbin目录:两个目录存放的都是可执行的二进制文件,bin是binary缩写,基本上就是用来存放我们经常使用的linux命令,例如文件操作需要经常使用的ls(查看),cd(切换目录),cp(复制)命令,文本编辑需要使用的vi(vi,vim编辑器),ed(不常用,类似于vi,也是文件编辑器),磁盘操作需要使用的dd(指定大小块拷贝一个文件),df(查看文件系统磁盘空间占用情况),mount(挂载)等等;
- /sbin目录:s是super User的缩写,只有超级用户才能执行的命令目录,如检查磁盘修复命令fcsk,磁盘分区fdisk,创建目录mkfs,关机命令shutdown,poweroff,初始化命令init等等;
- /home目录:系统中每个用户的工作目录,一般由用户的账号名称命名,比如说用户是Acronis,那么他的默认目录就是/home/Acronis
- /lib目录:存放共享程序库和映像文件,通过共享映射,每个程序就不需要分别保存自己的库文件而占用磁盘空间,大部分Linux系统都会提供让所有程序使用的文件,包含引导进程需要的静态库文件等等;
- /root目录:超级用户root默认主目录,通过root账号登陆到系统,默认进入到/root目录,普通用户,应用用户无权限进入;
- /run目录:外在设备自动挂载目录,一般出现在Centos7.x版本,用于自动挂载外界硬盘,U盘,光盘等等
- /mnt目录:用于手动挂载外接的U盘,移动硬盘等设备;
- /lost+found目录:用于保存丢失的文件,比如说意外关机磁盘读写错误导致的文件丢失,默认临时存放在这里,当系统重启后,引导程序运行fsck进行修复,除了”/“根,每个分区都会多出一个lost+found;
- /tmp目录:临时目录,用于存放临时文件,随时会被删除,也可以随时清理,没有占用机制;