查看系统的全部目录:
* 在终端中进入 / ,执行命令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目录中的命令的动态库文件,就在此目录中,内核模块同样也在这里。文件目录 | 说明 |
/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/中,当用户收下后,该邮件就会被删除。除了邮件以外,还有打印队列、周期执行任务队列等。 |