一,根目录详解
以centos7为例
-
/:根目录,包含整个文件系统的基础目录。所有文件和目录的路径都是以根目录为起点的。
-
/bin:二进制可执行文件的目录,包含常用的命令和工具(如ls、cp、mv等)。这里存放的命令通常可以被普通用户使用。
-
/dev:设备文件目录,包含与硬件设备和外部设备的连接点,例如硬盘、USB 设备、串口等等。这里的所有文件都是虚拟的,它们提供了对实际物理设备的访问接口。
-
/home:用户主目录的基础目录,每个用户都有一个对应的子目录。例如,用户名为 john 的用户主目录就是 /home/john。
-
/lib64
目录是用于存放 64 位架构的库文件的目录。它包含了许多系统程序和库文件所需的动态链接共享库文件,这些共享库文件通常被程序在运行时动态加载。 -
/mnt:临时挂载点的目录,用于临时挂载其他文件系统或网络共享。例如我们可以将其他磁盘的分区挂载到此目录下。
-
/proc:虚拟文件系统,包含当前运行进程和内核信息的文件。这些文件都是动态生成的,实时反映了系统状态的变化。
-
/run:在系统启动期间存放临时运行时数据的目录。例如 PID 文件、锁文件等等。
-
/srv:服务相关数据的目录,用于存放特定服务所需的数据。例如 Web 服务器的网站数据、FTP 服务器的文件存储目录等。
-
/tmp:临时文件目录,用于存放临时文件和临时数据。这个目录下的内容通常是瞬时的,可以被任何用户访问。
-
/var:可变数据的目录,包含日志文件、缓存数据等。例如邮件系统的邮件内容、打印任务的文档等。
-
/boot:启动加载器(boot loader)相关的文件目录,包括内核、initramfs 和 grub 等启动所需的文件。一般情况下,这些文件不需要手动操作。
-
/etc:系统配置文件目录,包含各种系统和应用程序的配置文件。例如网络配置文件、系统服务配置文件、用户帐户信息等等。
-
/lib:库文件的目录,包含共享库和内核模块。这里存放的文件被系统和程序动态链接使用,从而提供了常用的函数和程序库。
-
/media:可移动媒体设备(如光盘、USB 设备等)挂载点的目录。当可移动设备被插入计算机时,它们通常会自动挂载到这个目录下。
-
/opt:可选软件包的安装目录,常用于安装第三方软件。在一些情况下,软件包的具体安装位置不太容易确定,这个时候可以选择安装到这个目录下。
-
/root:超级用户(root)的主目录。与普通用户的目录类似,主要用于保存超级用户的文件和数据。
-
/sbin:系统管理命令的目录,只有管理员可以使用。与 /bin 目录不同,/sbin 目录存放的命令通常需要特殊权限才能执行。
-
/sys
目录是一个虚拟文件系统,它提供了一种访问内核启动时相关信息的方式。该目录包含了当前系统中硬件设备、内核模块、进程等实体的相关信息,以及一些系统和内核参数的配置项。 -
/usr:用户程序和文件的目录,包含系统级应用程序、库文件和文档。这个目录通常占用了主机上大部分的空间。
二,根目录下目录详解
1,/bin
目录是用于存放二进制可执行文件的目录
/bin/cat:用于将文件内容输出到标准输出或合并文件。 /bin/chmod:用于修改文件或目录的权限。 /bin/cp:用于复制文件或目录。 /bin/date:显示系统日期和时间。 /bin/echo:将指定的字符串输出到标准输出。 /bin/grep:在文件中搜索匹配指定模式的文本行。 /bin/kill:用于终止进程或发送信号给进程。 /bin/ls:显示目录内容。 /bin/mkdir:创建新目录。 /bin/mv:用于移动或重命名文件或目录。 /bin/pwd:显示当前工作目录的路径。 /bin/rm:删除文件或目录。 /bin/rmdir:删除空目录。 /bin/touch:更新文件的访问时间和修改时间,如果文件不存在则创建空文件。 /bin/uname:显示系统信息,如内核版本、节点名等。
/bin
目录下的命令和工具是一些基本的系统命令,通常不需要特殊权限即可执行。这些命令和工具的路径会被自动包含在系统的执行路径中,因此,用户可以直接在终端中输入命令名称,而无需指定完整的路径
2,/dev
目录是用于存放设备文件的目录
/dev/sda:硬盘设备文件,表示第一块硬盘。 /dev/tty:终端设备文件,在 Linux 中被称为控制台,用于输入和输出字符流。 /dev/null:黑洞设备文件,所有写入该设备文件的数据都会被直接丢弃。 /dev/random 和 /dev/urandom:随机数生成设备文件,用于生成随机数。 /dev/cdrom:光驱设备文件,用于读取光盘内容。 /dev/input/mice:鼠标设备文件,用于获取鼠标输入事件。
一些用户空间程序也可以通过设备文件与硬件设备进行交互,例如 mknod
命令可以创建特殊的设备文件来代表某个硬件设备
3,/home
目录是用于存放用户个人主目录的目录
/home:此目录是所有用户个人主目录的父目录。 /home/user1:用户 "user1" 的个人主目录。用户的个人文件和配置文件通常存放在这个目录下。 /home/user2:用户 "user2" 的个人主目录。 /home/user3:用户 "user3" 的个人主目录。 每个用户的个人主目录通常包含以下一些常见的子目录: /home/user1/Documents:文档目录,用于存放用户文档文件。 /home/user1/Pictures:图片目录,用于存放用户照片和图片文件。 /home/user1/Music:音乐目录,用于存放用户音乐文件。 /home/user1/Videos:视频目录,用于存放用户视频文件。 /home/user1/Downloads:下载目录,用于存放用户下载的文件。 该目录下隐藏文件: ~/.bashrc:bash shell 的配置文件,用于定义用户登录时执行的命令和环境变量等。 ~/.bash_profile:bash shell 的登录配置文件,用于定义用户登录时执行的命令和环境变量等。 ~/.bash_logout:bash shell 的注销配置文件,用于定义用户退出登录时执行的命令。 ~/.profile:用于定义用户登录时执行的命令和环境变量等的配置文件。 ~/.bash_history:用户使用命令行时的历史记录文件,记录了用户过去输入的命令。 ~/.ssh/:SSH 客户端的配置目录,存放用户的 SSH 密钥和其他配置文件。 ~/.vimrc:Vim 编辑器的配置文件,用于定义用户对 Vim 的个性化设置。 ~/.gitconfig:Git 版本控制工具的配置文件,用于定义用户对 Git 的个性化设置,如用户名、邮箱等参数。 ~/.mozilla/:Mozilla 系列浏览器(如 Firefox)的用户配置目录,包含用户的书签、插件和设置文件。
/home
目录通常只有 root 用户才有写入权限。普通用户只能在自己的个人主目录下进行读写操作。这是为了保证用户之间的文件隔离和安全性。
4,/lib64
目录是用于存放 64 位架构的库文件的目录
/lib64/libc.so.6:C 语言标准库,包含标准函数和数据类型定义。 /lib64/libpthread.so.0:POSIX 线程库,提供了支持多线程的函数和数据类型。 /lib64/libm.so.6:数学函数库,提供了许多数学函数的实现。 /lib64/libdl.so.2:动态链接库接口。 /lib64/libncurses.so.5:开发文本界面应用程序所需的库文件。 /lib64/libgcc_s.so.1:GCC 支持库,包含一些特定硬件上代码生成器使用的内部函数。
/lib64
目录下常见的库文件,还有许多其他库文件也可以在该目录下找到。此外,在 CentOS 7 中,还有一个类似的目录 /usr/lib64
,用于存放系统安装的其他库文件
5,/mnt
目录是用于临时挂载文件系统的目录
-
临时挂载:
/mnt
目录通常用于临时挂载外部设备,例如 U 盘、移动硬盘或光盘驱动器。当插入一个可读写的设备时,可以将其挂载到/mnt
目录中,并通过该目录访问设备上的文件。 -
临时文件系统:有时,需要挂载一个临时的文件系统来进行临时存储或操作。例如,在某些情况下,可以将一个 RAM 磁盘挂载到
/mnt
目录以提供临时的高速存储空间。 -
自定义挂载点:除了用于临时挂载外部设备之外,也可以根据需要创建自定义的挂载点。例如,如果有一个特定的文件系统需要挂载到特定的目录,可以将其挂载到
/mnt
目录下的子目录中。
需要注意的是,/mnt
目录只是一个约定,而不是系统要求的固定目录。如果希望将文件系统挂载到不同的目录,可以根据个人偏好和实际需求选择其他目录。另外,/mnt
目录只有 root 用户有写入权限,普通用户只能在 /mnt
目录下进行读取操作。
6,/proc
目录是一个虚拟文件系统
/proc/cpuinfo:显示系统中每个 CPU 的详细信息,如处理器型号、频率等。 /proc/meminfo:提供系统内存的详细信息,包括总内存、可用内存、缓存等。 /proc/loadavg:显示系统的负载平均值(load average),用于评估系统的负载情况。 /proc/version:包含有关当前运行的内核版本的信息。 /proc/filesystems:列出当前支持的文件系统类型。 /proc/net:包含各种网络协议的信息,如 /proc/net/tcp、/proc/net/udp 等。 /proc/sys:用于设置和查看内核参数的目录。例如,/proc/sys/kernel 目录中包含了与内核相关的参数,如 /proc/sys/kernel/hostname。 /proc/<PID>:该目录下的子目录 <PID> 是每个活动进程的代表,其中包含有关该进程的信息。例如,/proc/1234/status 提供了进程 ID 为 1234 的详细状态信息。
/proc
目录中的文件内容都是由内核动态生成的,并且在访问时会即时反映系统的当前状态。这些文件通常以文本格式表示,并且可以使用标准的文件读取操作来访问它们。
7,/run
目录是一个临时文件系统(tmpfs)目录
/run/user/<UID>:该目录存储了每个活动用户的临时文件和套接字。每个登录的用户都有一个对应的 <UID> 子目录,其中存放了该用户相关的临时文件和套接字等。 /run/lock:该目录用于存储系统级别的锁文件。当多个进程需要共享资源时,可以使用锁文件来实现进程间的同步和互斥操作。 /run/systemd:该目录是 systemd 服务管理器使用的运行时数据存储目录。其中包含了各种服务单元(unit)和套接字文件等,用于管理和维护系统的服务。 /run/dbus:该目录用于存储 D-Bus 通信协议相关的套接字文件,用于进程间的通信和消息传递。 /run/shm:该目录是一个共享内存目录,用于存储在进程间共享的临时文件。这些文件可以被多个进程同时访问,用于高效地进行数据交换。
/run
目录下的文件和目录都是在系统启动时动态创建的,并且在系统重新启动时自动清空。临时文件和套接字等只在当前系统运行期间存在,不会被永久保存。因此,如果需要长期存储数据,请将其放置在其他目录中,如 /var
目录。
8,/srv
目录是用户存储服务数据的目录
/srv
目录的使用方式没有严格的规定,因此它的具体用途可以根据具体的需求和配置进行灵活定义。一般来说,管理员可以根据服务的需要自行创建子目录,以组织并存储该服务的相关数据。
9,/tmp
目录是用于存储临时文件的目录
-
临时文件存储:
/tmp
目录用于存放各个用户和应用程序在运行过程中所产生的临时文件。这些临时文件通常是一些临时性质的数据,如缓存文件、临时日志文件以及其他不需要长期保存的中间文件。 -
可删除性:
/tmp
目录下的文件并不保留在系统重启之间,因此任何时候系统重新启动或定期进行清理时,/tmp
目录都会被清空。这可以确保系统的稳定性和安全性,并防止临时文件占用过多的磁盘空间。 -
共享性:
/tmp
目录是一个共享的临时文件存储区域,所有用户和应用程序都可以读取和写入该目录中的文件。这使得多个进程可以方便地在同一个临时文件中进行数据交换和通信。 -
权限设置:默认情况下,
/tmp
目录的权限设置为 1777,即所有用户都具有对目录的读写访问权限,并且只有文件的所有者才能删除自己的文件。这有助于确保临时文件的安全性和隐私性。由于
/tmp
目录是一个共享的临时文件系统,因此它可能会被滥用来存储恶意软件或进行其他安全攻击。为了增加安全性,建议定期清理/tmp
目录中的文件,并限制对该目录的访问权限。
10,/var
目录是用于存储可变数据的目录
/var/log:该目录包含了系统日志文件,记录了不同服务、应用程序和系统组件的日志信息。例如,/var/log/messages 记录了整体系统的消息日志,/var/log/secure 记录了安全相关的日志。 /var/spool:该目录用于存储任务队列和临时文件,比如打印队列、邮件队列等。每个子目录都与特定的服务或应用程序相关。 /var/cache:该目录用于存放缓存文件,如软件包管理器的缓存文件、字体缓存文件等。这些缓存文件可以提高系统性能并加快相关应用程序的响应速度。 /var/lib:该目录包含了与系统应用程序和服务相关的持久化数据。例如,数据库文件、邮件服务器的数据文件等都存放在此目录下。 /var/www:该目录是 Web 服务器默认的网站根目录,用于存放网站的文件和内容。 /var/run:该目录存储系统运行时的临时文件,如守护进程的PID文件和socket文件等。这些文件通常在系统启动时由相应服务或进程自动生成。
/var
目录是 CentOS 7 中用于存储可变数据的目录。它包含了许多不断变化的文件和目录,记录了系统运行过程中的各种状态信息、日志文件等。常见的子目录包括 /var/log
(日志文件)、/var/spool
(任务队列和临时文件)、/var/cache
(缓存文件)、/var/lib
(应用程序数据文件)、/var/www
(Web 服务器网站根目录)以及 /var/run
(临时文件)
11,/boot
目录是用于存放启动相关文件的目录
内核文件(vmlinuz-*):/boot
目录中的以 "vmlinuz-" 开头的文件是操作系统的内核文件。内核是操作系统的核心组件,负责管理计算机硬件和提供系统服务。当计算机启动时,GRUB 引导程序加载并执行内核文件。
初始内存文件系统(initramfs):/boot
目录中的以 "initramfs-*" 开头的文件是初始内存文件系统(initramfs)文件。initramfs 是一个临时的根文件系统,它包含了启动过程中所需的设备驱动程序和工具,用于在系统引导过程中加载真正的根文件系统。
GRUB 引导程序文件:/boot
目录中的 grub 文件夹存放了 GRUB(GRand Unified Bootloader)引导程序相关的文件。GRUB 是一个引导管理器,负责加载操作系统和其他引导选项。GRUB 的配置文件 grub.cfg 通常位于 /boot/grub2/grub.cfg
或 /boot/efi/EFI/centos/grub.cfg
。
System.map 文件:/boot
目录中的 System.map 文件是内核符号表,提供了内核的符号和地址之间的映射关系。它在调试和内核开发过程中非常有用。
initramfs-tools 目录:/boot
目录中的 initramfs-tools 目录是一些工具和脚本的存放位置,用于创建和处理 initramfs。
/boot
目录是 CentOS 7 中存放启动相关文件的目录。它包含了操作系统的内核文件、initramfs 文件、GRUB 引导程序文件以及其他与启动过程相关的文件和目录。这些文件和目录是操作系统启动的重要组成部分,对于系统的正常引导和运行至关重要
12,/etc
目录是用于存放系统配置文件的目录
/etc/passwd:这个文件包含了系统上的用户账户信息,如用户名、密码加密方式、用户 ID、用户家目录等。 /etc/group:这个文件包含了系统上的用户组信息,如组名和组 ID,以及属于每个组的用户列表。 /etc/shadow:这个文件用于存储用户账户的加密密码。只有特权用户(如 root)可以访问该文件。 /etc/hosts:这个文件用于设置主机名与 IP 地址的映射关系。可以在此文件中手动添加静态的主机名解析。 /etc/resolv.conf:这个文件包含了 DNS 解析器的配置信息,指定了域名解析所使用的 DNS 服务器。 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/ifcfg-<interface>:这些文件用于配置网络接口的设置,比如 IP 地址、子网掩码、网关等。 /etc/fstab:这个文件包含了存储设备的挂载信息,定义了系统启动时需要自动挂载的文件系统。 /etc/ssh/sshd_config:这个文件包含了 SSH 服务器的配置选项,用于设置 SSH 连接和身份验证的规则。 /etc/yum.conf 或 /etc/yum.repos.d/:这些文件用于配置 YUM 软件包管理器的仓库源,指定了从哪里获取软件包。 /etc/crontab 或 /etc/cron.d/:这些文件用于设置定时任务(Crontab)的调度规则,可以定期执行特定命令或脚本。拓展:
/etc/security
目录包含了与系统安全相关的配置文件和目录
/etc/security/access.conf
: 该文件用于定义用户对于系统上不同资源的访问权限。可以通过配置规则来限制或允许用户对某些资源的访问。
/etc/security/limits.conf
: 该文件用于为用户或用户组设置系统资源的限制。可以设置用户的进程数量、文件打开数量、内存使用量等限制。
/etc/security/namespace.conf
: 该文件用于配置命名空间的安全策略。可以控制不同用户之间如何共享命名空间以及是否允许使用特定的命名空间参数。
/etc/security/pam_env.conf
: 该文件用于配置 PAM(Pluggable Authentication Modules)环境变量。可以设置用户登录时的环境变量。
/etc/security/opasswd
: 该文件是用于存储用户密码历史记录的文件。当用户更改密码时,旧密码将被添加到该文件中,用于密码策略的检查。
/etc/security/limits.d/
目录: 该目录包含了用于设置资源限制的附加文件。可以使用这些文件来覆盖/etc/security/limits.conf
中的设置
/etc
目录是 CentOS 7 中存放系统配置文件的目录。它包含了许多重要的配置文件,用于设置用户账户、网络接口、主机名解析、DNS 解析、存储设备挂载、SSH 服务器等各种应用程序和服务的行为和属性。这些配置文件在系统运行过程中起着关键的作用,影响着系统的性能、安全性和功能
13,/lib
目录是用于存放共享库文件的目录
/lib/modules:这个目录包含了加载的内核模块(驱动程序)的库文件。每个内核模块都有对应的库文件,用于提供与硬件设备或其他内核功能的交互。 /lib/udev:这个目录包含了 udev 规则和相关的库文件。udev 是一个动态设备管理器,负责处理设备的插拔、设备节点的创建和命名等任务。 /lib/firmware:这个目录包含了硬件设备所需的固件文件。固件是嵌入式在硬件设备中的软件,它包含设备的控制指令和数据。 /lib/ld-linux.so*:这些文件是 Linux 动态链接器的库文件,用于加载和解析共享库以及执行可执行文件的操作。 /lib/libc.so*:这些文件是 C 语言库的共享库文件,提供了 C 语言标准库函数的实现。大多数应用程序都会使用这些库文件。 /lib/libpthread.so*:这些文件是 POSIX 线程库的共享库文件,提供了线程相关函数的实现。 /lib/libm.so*:这些文件是数学库的共享库文件,提供了数学运算相关的函数的实现。 /lib/security:这个目录包含了 PAM(Pluggable Authentication Modules)的安全模块。PAM 是一种身份验证框架,用于进行用户身份验证和访问控制。
/lib
目录是 CentOS 7 中存放共享库文件的目录。它包含了与内核模块、udev、固件、动态链接器、C 语言库、线程库、数学库和安全模块等相关的库文件。这些库文件提供了各种功能和服务,在应用程序和系统组件的开发和执行过程中发挥着重要的作用
14,/media
目录是用于临时挂载可移动媒体设备的目录
/media/cdrom 或 /media/dvd:这些子目录通常用于挂载光盘驱动器中的光盘。光盘可以包含安装程序、媒体文件、软件等。 /media/usb 或 /media/<device_name>:这些子目录用于挂载 USB 驱动器或其他可移动存储设备。具体的目录名称可能根据设备的类型或名称而有所不同。 当你插入可移动媒体设备时,系统会自动创建一个相应的子目录,并将设备挂载到该目录下。你可以通过浏览 /media 目录来查看当前已挂载的设备。
/media
目录下的子目录仅用于临时挂载设备,当设备被卸载后,这些子目录将会被自动删除
15,/opt
目录是用于存放可选软件包或应用程序的目录 一般为空目录
16,/root
目录是超级用户(也称为 root 用户)的主目录
配置文件:/root 目录经常包含与超级用户相关的配置文件,这些配置文件可能包括 shell 配置文件(如 .bashrc)、环境变量文件(如 .bash_profile)等。这些文件可以定义超级用户的默认环境变量、别名和命令行提示符等设置。 系统管理脚本:超级用户通常会在 /root 目录下保存一些系统管理脚本。这些脚本可以用于自动化任务、备份和恢复操作、系统维护等。 日志文件:某些系统服务和应用程序的日志文件可能位于 /root 目录下。这些日志文件记录了系统的运行状态、错误信息、事件等,帮助管理员进行故障排除和系统监控。 其他文件和目录:除了上述内容外,/root 目录可能还包含其他与超级用户相关的文件和目录。这可能包括下载的文件、个人文档、临时文件等。
/root
目录只能被超级用户访问,其他普通用户无法访问该目录下的文件和目录。这是为了确保超级用户的安全和权限
17,/sbin
目录是用于存放系统管理员(超级用户)使用的系统管理命令的目录
ifconfig: 用于配置和显示网络接口的信息,包括 IP 地址、子网掩码、MAC 地址等。 route: 用于配置和显示网络路由表,控制数据包的转发。 iptables: 用于配置 Linux 系统的防火墙规则,控制网络流量的进出。 fdisk: 用于对硬盘进行分区操作,包括创建、删除、调整分区等。 mkfs: 用于创建文件系统,将分区格式化为特定的文件系统类型,如 ext4、XFS 等。 mount: 用于挂载文件系统到指定的挂载点,使得该文件系统可以访问。 umount: 用于卸载已挂载的文件系统,将其从系统中移除。 shutdown 和 reboot: 分别用于关闭系统和重新启动系统。 useradd 和 userdel: 分别用于添加和删除系统用户。 passwd: 用于设置用户的密码。
/sbin
目录下的命令通常只有超级用户(root 用户)才能执行,这是为了保证权限和系统安全
18,/sys
目录是一个虚拟文件系统,用于提供对内核和设备驱动程序的运行时信息和参数的访问
/sys/block/: 包含了系统中所有块设备(如硬盘、SSD)的信息。每个块设备都有一个对应的子目录,可以查看设备状态、分区信息等。 /sys/class/: 包含了设备类别(class)相关的信息。例如,/sys/class/net 子目录包含了网络接口的信息,/sys/class/power_supply 子目录包含了电源供应器的信息。 /sys/devices/: 包含了系统中所有设备的信息。每个设备都有一个对应的子目录,其中包含了设备的配置、状态、驱动程序等信息。 /sys/fs/: 包含了文件系统相关的信息。例如,/sys/fs/cgroup 子目录包含了控制组(cgroup)的相关信息,/sys/fs/ext4 子目录包含了 ext4 文件系统相关信息。 /sys/kernel/: 包含了内核相关的信息。例如,/sys/kernel/debug 子目录用于提供内核调试相关的信息,/sys/kernel/mm 子目录提供了内存管理相关的信息。 /sys/module/: 包含了内核模块的信息。每个加载的内核模块都有一个对应的子目录,可以查看模块的参数、状态等。 /sys/power/: 包含了系统电源管理相关的信息。例如,/sys/power/state 文件用于控制系统的电源状态(如睡眠、挂起)。
/sys
目录中的文件和目录是动态生成的,并且大部分只能被超级用户(root 用户)访问
19,/usr
目录是用于存放用户自己安装的软件和文件的目录
/usr/bin/: 包含了大部分用户可执行的命令。这些命令通常不需要特殊的权限就可以执行。 /usr/sbin/: 包含了一些系统管理员(超级用户)使用的系统管理命令。这些命令通常需要超级用户权限才能执行。 /usr/lib/: 包含了系统和应用程序所需的共享库和支持文件。其中包含了很多扩展名为 .so 的共享库文件。 /usr/share/: 包含了系统和应用程序所需的共享数据和文档文件。其中包括帮助文件、文档、图标等。 /usr/local/: 包含了用户自己编译或安装的软件和文件。这些软件通常与操作系统自带的软件有所区别,也不会被操作系统的升级覆盖掉。 /usr/include/: 包含了 C 和 C++ 程序所需的头文件。
/usr
目录下的文件和目录通常不会被操作系统本身所修改,因此,用户可以在其中安装自己所需的软件或文件,而不会影响操作系统的正常运行