架构师的成长之路初片~Linux目录结构

这是本作者看过的最详细的目录结构说明:摘自:https://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=190123

查看系统的全部目录:

* 在终端中进入 / ,执行命令ls。

* 在文件浏览器中,通过左侧导航中的“文件系统”,进入根目录。如图1所示。   

 

图1 系统根目录



1 系统目录概述

Linux目录类似一棵树,以根目录出发,含有多个子目录或文件,子目录中又可含有更下级的子目录或者文件,分层衍生出多个分叉。如图2所示。

 

图2 目录结构
 

一般来说,根目录下只存放目录,除了vmlinuz和initrd.img两个链接文件。其中,vmliuz是Linux内核的镜像文件,initrd.img是RAM disk的镜像文件,都是用于启动Linux系统。

下面将对每一个目录的用途及内容进行介绍。

 

2 目录详解
2.1 /bin、/sbin、/usr/bin、/usr/sbin


表1 bin与sbin
文件目录
说明
/bin
放置一些系统必备的可执行文件,比如bash、cat、chmod、cp、ls、mv等,普通用户和root用户都可以使用。
/sbin
放置一些系统管理必备的可执行文件,比如e2fsck、ethtool、fdisk、mount等,只有root用户才能使用。
/usr/bin
放置一些必备应用软件的可执行文件,比如vim、ssh、file、c++等。
/usr/sbin
放置一些系统管理必备软件的可执行文件,比如gparted、cron、tcpdump等,只有root用户使用。

 

可以理解为:如果是用户和管理员必备的命令,则会放在/bin;如果是系统管理员必备的命令,则会放在/sbin。同理,/usr/bin和/usr/sbin对应的是系统额外的应用软件。

 

图3 /bin目录
 

2.2 /boot

存放的是系统的内核文件、引导加载程序文件和grub开机管理。根目录下的两个链接(vmlinuz和initrd.img)就是指向/boot目录下对应的文件。在系统安装时,会为boot单独创建一个分区。

图4 /boot目录
 
图5 根目录下的启动链接文件
 

2.3 /dev

在Linux系统中,任何设备都是以文件的形态存在于/dev目录中。访问该目录下某个文件,相当于访问某个设备。比较重要及常用的文件说明如表 2所示。


表2 /dev子目录介绍
文件目录
说明
/dev/sd*
SCSI磁盘,sd后面的字母表示第几块磁盘,数字表示该磁盘的第几分区。比如:sda1,表示第一块磁盘的第一个分区。一般来说,系统盘为sda,后续外接的磁盘,则从b开始递增。
/dev/tty*
TTY(终端)设备。比如:tty0,表示当前虚拟终端;ttyS0,表示当前UART串口;当串口为USB外接的时候,则会有ttyUSB0,表示当前USB串口。
/dev/loop*
回环设备,通常被用于光盘或是磁盘镜像,以循环挂载的方式来挂载包含文件系统的文件,使得在这个文件系统中的内容得以被访问。比如:loop0,表示第一个回环设备。
/dev/null
空设备。它会丢弃一切写入其中的数据,并且没有任何可以读取的内容。可当作垃圾站,清除文件中的内容。
/dev/zero
零流源。与/dev/null相似,任何写入都将被直接丢弃,读取会得到无限多的二进制零流。通常用于创建一个指定长度(大小)、用于初始化的空文件。
/dev/random/dev/urandom
随机数设备,提供永不为空的随机字节数据流。差别在于:/dev/random依赖于系统中断,产生的速度比较慢,有时候还会出现较大的停顿,数据随机性更高;/dev/urandom不依赖系统的中断,产生速度很快,相比而言数据随机性低。



2.4 /etc

用于存放配置文件,包含系统配置和应用软件的配置。该目录下的文件由root用户使用,普通用户大都只有读取的权限。比较重要的文件说明如表3所示。


表3 /etc子目录介绍


文件目录
说明
/etc/hosts
域名解析文件,即ip地址与域名的对应关系,网络访问时,可快速解析。
/etc/passwd
用户数据库,存放了系统中所有的用户信息,包括系统或服务正常运行所必需的用户(系统用户)。文件中每一行各字段的含义为——用户名:密码:UID:GID:用户信息:用户主目录:Shell其中,用户名在同一系统中是唯一的,限制在8个字符(字长度之内,并且区分大小写;UID是用户标识,也是用于区分用户,常用于系统内部管理进程;GID是组标识,一个用户可以存在多个组;Shell是指用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名。密码在passwd文件中,一般以一个“x”符号来代替,shadow文件为真正的密码文件,只有root用户才有读取的权限。
/etc/shadow
真正的密码文件。文件中每一行各字段的含义为——用户名:加密后的密码:最近改动日期:不可更改天数:需要重设天数:过期提醒天数:过期后的宽限时间:账号失效日期其中,密码最近的改动日期,是从1970年1月1日算起的天数;不可更改的天数为0表示没有限制;需要重设天数为99999表示没有限制;失效日期也是从1970年1月1日算起的天数。
/etc/group
系统用户的分组信息。文件中每一行各字段的含义为——组名:组密码:组ID:包含的用户与passwd相似,组密码以“x”代替,gshadow文件为真正的组密码文件;组ID与passwd中的GID是对应的。
/etc/gshadow
真正的组密码文件。文件中每一行各字段的含义为——组名:组密码:组管理员:组成员组密码字段为空或是“!”号,表示没有密码;若有多个组管理员、组成员,用“,”分隔。
/etc/init.d
存放系统各种服务的启动和停止脚本。使用该目录下的脚本,需要有root权限。比如需要重启网络,可以使用命令——/etc/init.d/networking  restart
/etc/init
存放系统各种服务和应用的配置文件。
/etc/rc*.d
在这些目录中,包含了控制进程进行的脚本。以K开头的脚本(存放在*为0-6的目录下)运行在以S开头的脚本(存放在rcS.d目录下)之前。脚本放置的地方,决定开始运行的层级。
/etc/rc.local
在系统初始化级别脚本运行之后(即系统启动之后)再执行的脚本。
/etc/fstab
在开机引导时,自动挂载的文件系统。文件中每一行对应一个分区,含义为——实际位置挂载点格式挂载状态 DUMP功能开机检查其中,挂载状态比如是ro(只读)、rw(读写)等;DUMP功能指在系统DUMP时是否需要BACKUP,默认为0;开机检查除了root除了有必要为1,其余可根据需要调整,默认为0。
/etc/issue
getty在登录提示符前的输出信息,通常包括系统的一段短说明或欢迎信息。
/etc/profile
设置系统的全局变量。比如——PATH:预设可执行文件或命令的搜索路径;USER:用户登录时使用的用户名;HOSTNAME:所使用的主机名。
/etc/profild.d
存放的是一些应用程序所需的启动脚本,包括一些命令的附加设置。
/etc/X11
X_Window系统的配置文件。
/etc/skel
新建用户时,把该目录下的内容拷贝到用户的家目录下。


2.5 /home

用户主目录的位置,每创建一个用户,该目录下就会生成名字为该用户的文件夹,用于存放用户的各种文件、数据。


2.6 /lib

库文件目录,包含了所有对系统有用的库文件。在/bin或/sbin目录中的命令的动态库文件,就在此目录中,内核模块同样也在这里。


[/table][table=98%]
文件目录

说明

 

/lib32/lib64
这两个目录与/lib是一样的,包含的是特殊架构的库文件。

 

/lib/firmware
包含硬件、固件代码。硬件运行在系统中分为两个部分:固件(加载到实际硬件的代码)和驱动程序(用于固件和内核之间的通讯)。

 

/lib/modules
包含所有可加载的内核模块,如果有多个内核,则该目录下会有代表每个内核的目录。

 

/lib/modprobe.d
modprobe命令的配置。该命令的作用是在linux内核中,添加或删除模块。

 

/lib/hdparm
包含 SATA/IDE 硬盘正确运行的参数。

 

/lib/udev
udev是一种工具,能够根据系统中硬件设备的状态,动态更新设备文件(创建,删除和刷新)。该目录存放了所有的 udev 相关的文件和文件夹,比如rules.d就设定了udev规范。



2.7 /media、/mnt

/media ——可移除的外置设备(比如U盘、光盘等)自动挂载的位置。

/mnt ——文件系统挂载点。当进行手动挂载移动介质、其它文件系统的分区、可安装文件系统时,挂载点的优先选择。


2.8 /opt

存放系统额外软件安装的文件和程序,一般是大型第三方软件,比如WPS办公,Firefox等。


2.9 /proc

一个虚拟文件系统,是正在运行的内核信息映射,也是内核和内核模块用来向进程发送消息的机制。它可以让用户和内核内部数据结构进行交互,获取有关进程的信息,并且可以在运行中改变设置。

/proc运行在内存之中(不占用外部存储空间),以文件的形式向用户空间提供了访问接口。主要包含了进程信息、内存资源信息、磁盘分区信息等。


2.10 /root

系统管理员(root)的主目录。


2.11 /run

进入/run目录后,执行命令“df -k .”,可以看到它被识别为“tmpfs”,即临时文件系统。与/var/run相同,该目录下是程序或者服务启动后的PID,重启后会重/srv新生成对应的目录数据。


2.12 /srv

主要用来存储本机或本服务器提供的服务或数据(用户主动产生的数据、对外提供的服务)。


2.13 /sys

/sys是sysfs的挂载点。sysfs是一个虚拟的、基于内存的文件系统,它与/proc相似,可以查看和设定内核参数,并且,还能以更好的方式导出内核数据。

 

文件目录
说明
/sys/devices
所有在总线上被发现的物理设备,比如网卡、显卡、ACPI、虚拟设备(tty、bonding等),是内核对系统中所有设备的分层次表达模型。
/sys/dev
字符设备(block)和块设备(char),里面均是以主次设备号(major:minor)命名的链接文件,指向/sys/devices。
/sys/class
包含所有注册在kernel里面的设备类型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下是链接文件,指向/sys/devices/目录下的具体设备。
/sys/bus
按总线类型分类设备。其中,每个子目录下都包含devices和drivers两个子目录:devices ——该总线类型下的所有设备,均为链接文件,指向(/sys/devices/;drivers ——该总线类型下的驱动,参数可查看和修改。
/sys/modules
所有被载入内核的模块,包括编译到内核中的模块,和编译为.ko文件的外模块。
/sys/fs
描述系统中所有文件系统,包括文件系统本身和按文件系统分类存放的已挂载点(一些传统虚拟文件系统控制参数仍然在/proc/sys/fs中)。
/sys/kernel
内核中所有可调整的参数(一些传统内核可调整参数仍然位于/proc/sys/kernel中)。
/sys/firmware
对固件对象和属性进行操作和观察的接口,即系统加载固件机制时对用户空间的接口。
/sys/power
存在一些属性文件,用于控制整个机器的电源状态。



2.14 /tmp

用户和程序的临时目录。该目录中的内容会被系统定时自动清空。


2.15 /usr

/usr目录下放置的是系统中软件的资源,而不是用户数据(usr≠user);所有系统默认的软件都会放置到/usr。

 

文件目录
说明

 

/usr/bin/usr/sbin
参考2.1的内容。
/usr/include
开发和编译应用程序所需要的头文件。编译时,可以通过头文件来使用某些库函数。
/usr/lib
目标库文件(包括动态连接库),以及通常不是直接调用的可执行文件。
/usr/local
安装本地程序的默认路径。当下载一个程序源代码进行编译安装时,如果不特别指定安装路径,那么程序相关的文件将会默认放置到这个目录对应的子目录下。
/usr/share
存放了同一个操作系统在不同构架下工作时,特定应用程序的共享数据,比如背景图、程序文档信息、语言设置等。
/usr/src
Linux内核源码。



2.16 /var

常态性变动的文件,包括缓存、日志信息以及某些运作所产生的文件。

 

 

文件目录
说明
/var/cache
应用程序运行过程中产生的缓存。
/var/lib
应用程序运行过程中,需要使用到的文件。
/var/local
存放/usr/local中安装的程序的可变数据。
/var/lock
锁定文件。比如,某些资源一次只能被一个应用程序使用时,如果同时被两个及以上程序使用,就会产生错误,于是,就需要对该资源进行锁定操作。
/var/log
有关于系统的各种日志信息:
alternatives.log
系统的更新替代信息。
auth.log
系统授权信息,包括用户登录和使用的权限机制等。
boot.log
系统在启动引导过程中的日志信息。
bootstrap.log
构建最小系统的日志信息。
btmpwtmp
btmp记录所有失败登录信息;wtmp记录了谁正在登录进入系统,使用命令显示这个文件信息等。
dmesg
包含启动时的内核缓冲,以及与硬件有关的信息。
dpkg.log
使用dpkg安装或卸载软件的日志。
faillog
记载用户登录失败的信息,以及错误登录命令。
syslog
格式说明:日期主机名进程名[PID]: 具体信息其中,日期格式为MM dd hh:mm:ss;进程的PID通常是一个数字,也可以为空。syslog是Linux系统默认的日志守护进程,任何希望生成日志信息的程序都可以通过syslog提供的接口,在该文件中生成信息。它对于系统、软件调试,定位问题有很大作用。
Xorg.*.log
X显示的日志信息。
/var/run
存放某些程序或者服务启动后的PID。
/var/spool
放置一些队列数据,即排队等待其他程序使用的数据。这些数据被使用后,通常都会被删除。比如系统收到新邮件会放置到/var/spool/mail/中,当用户收下后,该邮件就会被删除。除了邮件以外,还有打印队列、周期执行任务队列等。



2.17 /lost+found

在系统修复过程中,恢复的文件所在目录。

posted @ 2021-11-12 16:33  樱花泪  阅读(103)  评论(0编辑  收藏  举报