目录
一、Linux系统目录结构
定义:
Linux 系统的目录结构采用树形结构,以根目录 “/” 为起点,下面包含多个子目录,每个子目录都有其特定的用途和功能。以下是对 Linux 系统主要目录的介绍:
根目录:
-
路径标识:“/” 表示根目录,是 Linux 文件系统树形结构的最顶层目录,也是整个文件系统的入口。系统中的所有文件和目录都从根目录开始延伸。root 用户的家目录 “/root” 是根目录下的一个子目录 ,专门用于存放 root 用户的个人文件、配置文件等。
-
重要性:根目录包含了系统启动和运行必需的文件和目录,如
/bin
(存放基本命令 )、/etc
(存放系统配置文件 )、/dev
(存放设备文件 )等。对根目录及其重要子目录的误操作可能会使系统无法正常启动或运行。
二、目录与说明
命令
1、/bin:(sbin:超级命令、二进制文件存放目录、只有root用户能使用的命令)
存放着系统启动时需要的可执行二进制文件,如ls
、cd
、cp
等常用命令,这些命令在系统引导时会被加载到内存中,供系统和用户使用。(即:命令,二进制文件存放目录)
功能:
-
提供基本操作命令:
/bin
目录中的命令是系统启动和运行所必需的,也是用户在日常使用中频繁调用的。这些命令涵盖了文件操作、系统管理、文本处理、网络通信等多个方面,为用户和系统提供了最基本的功能支持。 -
保证系统正常运行:在系统启动过程中,需要依赖
/bin
目录中的命令来完成一系列初始化操作。例如,/bin/sh
是系统默认的 shell 解释器,用于执行用户输入的命令和脚本,是系统交互和脚本运行的基础。
[root@bogon /]# cd /bin [root@bogon bin]# ls /bin | grep ls alsabat alsa-delay alsaloop alsamixer alsatplg alsaucm
2、/boot:
系统引导程序及系统内核文件储存目录
[root@bogon bin]# cd /boot [root@bogon boot]# ls config-3.10.0-1160.el7.x86_64 efi grub grub2 initramfs-0-rescue-efb085be4ff040d5b856018afd1782c7.img initramfs-3.10.0-1160.el7.x86_64.img initramfs-3.10.0-1160.el7.x86_64kdump.img symvers-3.10.0-1160.el7.x86_64.gz System.map-3.10.0-1160.el7.x86_64 vmlinuz-0-rescue-efb085be4ff040d5b856018afd1782c7 vmlinuz-3.10.0-1160.el7.x86_64
3、dev:
它是一个特殊的文件系统,用于管理设备文件。在 Linux 下,一切皆文件,设备也通过文件形式来表示和操作 。/dev
目录中存放着代表各种硬件设备的文件,通过对这些文件的读写等操作,可实现对设备的控制与数据交互 。(即:设备、光驱、硬盘目录)
常见设备文件分类及示例:
-
块设备文件:这类设备以数据块形式存储和传输数据,如硬盘、U 盘等 。例如
/dev/sda
通常代表系统中第一个 SCSI(小型计算机系统接口 )或 SATA(串行 ATA )硬盘 ,/dev/sda1
表示该硬盘的第一个分区。 -
字符设备文件:数据按字符流顺序进行传输,像键盘、鼠标、串口等 。比如
/dev/tty
表示当前的终端设备,用户对其操作可实现输入输出交互;/dev/input/mouse0
可能代表系统中第一个鼠标设备 。 -
其他特殊设备文件:
-
/dev/null
被称为空设备,也叫黑洞设备。写入它的任何数据都会被丢弃,常用于丢弃命令执行的输出结果 ,例如command > /dev/null
可将command
命令的输出重定向到/dev/null
,从而不在屏幕显示输出内容。 -
/dev/random
和/dev/urandom
用于生成随机数。/dev/random
基于系统中断等事件产生随机数,当系统熵池(用于收集随机数据的缓冲区 )中的数据不足时,生成过程会阻塞等待;/dev/urandom
则不会阻塞,在安全性要求不是极高的场景下(如生成测试随机数 )可使用 。
-
[root@bogon dev]# ls agpgart rtc tty45 autofs rtc0 tty46 block sda tty47 bsg sda1 tty48 btrfs-control sda2 tty49 bus sg0 tty5 cdrom sg1 tty50 centos shm tty51 ........
4、etc:
在 Linux 系统里,/etc
是系统配置文件目录,几乎所有系统和应用程序的配置信息都存放在这里。系统启动、运行过程中,会读取该目录下的配置文件来确定各项功能的运行参数、用户权限、网络设置等。
常见文件及目录举例:
-
系统配置文件
-
/etc/profile
:用户登录时会执行的系统环境变量配置文件,用于设置全局的环境变量、命令别名等,影响所有用户的登录会话。 -
/etc/hosts
:本地主机名解析文件,可手动配置主机名与 IP 地址的映射关系,在网络通信中辅助域名解析,优先于 DNS 解析。 -
/etc/resolv.conf
:DNS(域名系统)客户端配置文件,用于指定系统使用的 DNS 服务器地址,决定了系统如何将域名解析为 IP 地址。
-
-
用户与权限相关
-
/etc/passwd
:存放用户账户基本信息,包括用户名、用户 ID、组 ID、用户主目录、默认 shell 等,是系统识别用户身份的关键文件。 -
/etc/shadow
:用于存储用户密码相关信息,相比/etc/passwd
,它对密码字段进行了更安全的存储(加密存储),只有 root 用户等特定权限用户可读取。 -
/etc/group
:记录用户组信息,包括组名、组 ID 以及组内成员等,用于管理用户权限和分组。
-
-
服务配置目录
-
/etc/httpd/
:Apache HTTP Server 的配置目录,里面包含httpd.conf
等配置文件,用于设置 Web 服务器的运行参数,如监听端口、虚拟主机配置、访问权限等。 -
/etc/ssh/
:OpenSSH 服务器和客户端的配置目录,sshd_config
用于配置 SSH 服务器的各项参数,如允许连接的端口、认证方式、用户登录限制等。
-
[root@bogon dev]# cd /etc [root@bogon etc]# ls abrt adjtime aliases aliases.db alsa alternatives anacrontab asound.conf at.deny audisp audit ......
5、home:
在 Linux 系统中,/home
目录是用户的家目录,具有作用:
存放用户个人文件:
是用户存储个人数据的主要场所,像文档、图片、音乐、视频等各类文件都可存放在这里。用户能在此目录下创建自定义子目录,例如按工作、学习、娱乐等分类,以便有条理地管理个人文件 。
保存用户配置文件:
众多应用程序会在用户的 home
目录下生成配置文件 ,用来记录用户的偏好设置和个性化选项。比如 Shell 配置文件(如.bashrc
,可设置终端颜色、命令别名等 )、编辑器配置文件(如.vimrc
,用于定制 Vim 编辑器的行为 )、浏览器的书签文件等 。这些配置文件能让用户在不同会话中保持个性化设置。
还原用户环境:
每次用户登录系统时,系统会自动将当前工作目录切换到该用户的 home
目录 。这样一来,用户能恢复到上一次退出时的环境状态,包括之前打开的文件、设置的环境变量、命令历史等 ,保证工作的连续性。
保护用户隐私:
默认情况下,home
目录的权限设置为仅用户本人拥有读写权限,其他普通用户没有访问权限(超级用户 root 除外 ) 。这就确保了用户可以放心地在其中存放私人文件和敏感信息,不用担心被他人随意查看或修改。
辅助管理用户账户:
对于系统管理员而言,home
目录是管理用户账户的重要依据 。例如,可以通过设置 home
目录的存储空间大小,限制用户使用磁盘空间的上限;在删除用户账户时,也可选择一并删除其 home
目录,以彻底清除该用户相关数据 。
[root@bogon etc]# cd /home [root@bogon home]# ls linux
6、lib:(lib64(向下兼容):存放文件目录64位)
在 Linux 系统中,/lib
目录主要用于存放系统所需的共享库文件 ,(即:库文件存放目录)。作用如下:
提供基础功能支持:
共享库是多个程序可共享使用的可执行代码和数据集合,包含了操作系统核心功能的实现 。像 C 标准库libc.so
,提供了基本的输入输出、内存管理、字符串操作等函数,是众多程序运行的基础;数学库libm.so
,为涉及数学运算的程序提供三角函数、指数对数函数等计算功能 。几乎所有系统软件和应用程序都需调用这些库中的函数来实现各种操作。
实现代码复用与程序轻量化:
通过使用共享库,多个程序可重复利用相同代码,避免重复编写。例如,多个不同的文本处理程序都可调用共享库中的字符串处理函数,无需各自编写一套。而且共享库可存储在公共位置,程序运行时按需加载,减小了程序自身大小,节省磁盘空间与内存占用。
支持内核功能扩展:
/lib
目录下的内核模块(通常以.ko
为后缀,如drm.ko
、usbcore.ko
等 )用于扩展和定制 Linux 内核功能 。这些模块可在系统运行时加载到内核中,为特定硬件提供驱动支持,或增添新的内核功能。
存放硬件固件:
一些硬件设备正常工作依赖特定固件文件,它们通常存放在/lib/firmware
目录下 。比如无线网卡、声卡等设备,需要加载相应固件文件来初始化驱动程序,以实现与系统的正常通信。
[root@bogon home]# cd [root@bogon ~]# cd /lib [root@bogon lib]# ls alsa java-1.6.0 mozilla binfmt.d java-1.7.0 NetworkManager cpp java-1.8.0 os-release crda java-ext polkit-1 cups jvm python2.7 debug jvm-commmon rpm dracut jvm-exports sendmail firewalld jvm-private sendmail.postfix firmware kbd sse2 fontconfig kdump sysctl.d games kernel systemd gcc locale tmpfiles.d
.......
7、lost+found:
在 Linux 系统中,lost+found
目录是一个特殊的目录,通常存在于文件系统的根目录下,如/
、/home
、/var
等。它主要用于存放系统在某些异常情况下丢失的文件碎片或无法确定归属的文件,是 Linux 系统中用于应对文件系统异常情况的一种机制。以下是其详细介绍:
产生背景:
-
当文件系统发生错误,如突然断电、系统崩溃、硬件故障等,可能导致正在进行的文件操作中断,使得一些文件的部分数据丢失或文件系统的元数据损坏,进而使文件系统无法正确识别和定位这些文件。
-
还有一些情况,如文件系统进行磁盘检查和修复时,可能会发现一些孤立的文件块,这些文件块不属于任何现有的文件或目录结构,系统就会将它们移动到
lost+found
目录中。
用途:
-
文件恢复:系统管理员或用户可以在
lost+found
目录中查找是否有重要的文件需要恢复。虽然这些文件可能已失去原有的文件名和目录结构,但通过一些文件恢复工具或手动分析,有可能找回部分或全部数据。 -
系统维护:对于系统管理员来说,
lost+found
目录是检查文件系统健康状况的一个重要指标。如果该目录中经常出现大量文件,可能意味着文件系统存在潜在的问题,需要进一步检查和修复,以防止数据丢失和系统不稳定。
特点:
-
无特定文件结构:
lost+found
目录中的文件没有特定的目录结构或文件名规律。文件通常以数字命名,这些数字可能是文件在磁盘上的 inode 编号或其他系统内部的标识。 -
权限设置:一般情况下,
lost+found
目录的权限设置为700
,即只有文件所有者(通常是 root 用户)具有读、写和执行权限,以确保系统的安全性和数据的完整性,防止未经授权的用户访问或修改这些可能涉及系统关键信息的文件。 -
命令解析:find /lost+found -name "*"
-
find
是用于在指定路径下查找文件或目录的命令。 -
/lost+found
是指定的查找起始路径 ,即从该目录开始搜索。 -
-name "*"
是查找条件,-name
表示按名称查找,*
是通配符,代表匹配任意字符,即查找所有名称的文件和目录。
-
-
可能结果:正常执行后,会列出
/lost+found
目录及其子目录下的所有文件和目录的路径 。若该目录为空或权限不足无法访问,则可能没有输出或提示权限相关错误。
8、mnt:
临时挂载点目录
9、opt:
三方软件安装目录
10、proc:
在 Linux 系统中,/proc
是一个虚拟文件系统,它并不占用实际的磁盘空间,而是实时反映系统运行时的状态信息。以下是关于它的详细介绍:(即:虚拟目录,显示硬件的信息及内核参数配置文件。)
特点:
-
虚拟性:它不是像普通文件系统那样将数据存储在磁盘上,而是基于内存动态生成。系统运行时,内核将各种系统状态信息以文件和目录的形式组织在
/proc
中,当系统重启或相关状态改变时,其内容也会相应更新。 -
实时性:能实时反映系统当前的运行状态。例如,系统中进程的创建、运行、结束等变化,会立即在
/proc
相关文件中体现出来,为用户和程序提供最新的系统信息。
常见目录和文件及其作用:
-
进程相关
-
/proc/[pid]
:其中[pid]
是具体进程的 ID 号。每个正在运行的进程在/proc
下都有一个以其 PID 命名的目录,如2345
号进程对应/proc/2345
。该目录下包含了此进程的详细信息,像cmdline
文件记录了启动该进程的命令行参数;status
文件记录着进程的状态、内存使用等信息;fd
目录则包含了该进程打开的文件描述符。 -
/proc/self
:是一个特殊的链接,指向当前正在访问/proc
的进程对应的/proc/[pid]
目录。例如,当用户在终端执行命令时,/proc/self
就指向当前 shell 进程对应的/proc
目录,方便用户获取自身进程信息。
-
-
系统硬件和资源相关
-
/proc/cpuinfo
:记录了 CPU 的详细信息,如 CPU 型号、厂商、核心数、缓存大小、主频等参数。可通过查看此文件了解系统 CPU 的性能指标。 -
/proc/meminfo
:提供系统内存使用情况的信息,包括总内存、空闲内存、已用内存、缓冲区内存、缓存内存等数据。系统管理员和开发人员可据此监控系统内存状态。 -
/proc/devices
:列出了当前系统中已注册的设备驱动程序信息,包括设备的主设备号和设备类型等,有助于了解系统中设备驱动的加载情况。
-
-
系统运行状态相关
-
/proc/loadavg
:记录了系统在过去 1 分钟、5 分钟、15 分钟内的平均负载情况。平均负载反映了系统的繁忙程度,数值越高表示系统正在处理的任务越多。 -
/proc/uptime
:显示系统自上次启动以来的运行时间,以及系统空闲时间等信息。可用于了解系统的连续运行时长。
-
[root@bogon opt]# cd /proc [root@bogon proc]# ls 1 2081 360 616 bus 10 21 361 651 cgroups 11 2101 362 652 cmdline 1261 2118 363 653 consoles 13 2121 364 654 cpuinfo 1325 22 365 655 crypto 1327 2272 366 656 devices 1329 2273 367 657 diskstats 1330 23 368 658 dma 1339 24 369 660 driver 1344 24899 370 662 execdomains 1346 278 371 663 fb
11、media:
挂载可移动媒体设备的标准位置
12、root:
超级用户:
-
权限:root 是系统的超级用户,拥有最高权限,能对系统进行全方位的管理和操作。可读写任意文件和目录、修改系统配置、安装 / 卸载软件、管理用户账户及权限等。几乎不受系统的常规权限限制,能执行普通用户无法完成的任务。
-
用途:常用于系统的初始化设置、安装新的软件包、修复系统故障、调整系统内核参数等场景。例如,安装大型应用程序时,可能需要 root 权限来将程序文件复制到指定目录并进行相关配置;在排查网络故障修改网络配置文件时,也常需 root 权限。
-
风险:由于权限过大,不当操作可能会导致系统崩溃、数据丢失等严重后果,所以使用 root 账户操作时需格外谨慎,非必要不建议直接以 root 身份进行日常操作。
[root@bogon proc]# cd /root [root@bogon ~]# ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
13、run:
在 Linux 系统中,/run
目录是一个临时文件系(tmpfs),在系统运行时为进程提供了便捷的临时数据存储和交互场所,对系统的正常运行和进程间协作起到重要作用 。具备以下作用:
存储运行时临时文件:
系统启动及运行期间,各进程会产生临时文件用于暂存数据。比如某些进程在启动时,需创建临时文件存储初始化数据,这些文件就可存于 /run
目录。且系统重启或关机时,该目录下文件会被清空,符合临时数据的使用特性 。
进程间通信支持:
-
进程号文件:许多守护进程和服务启动后,会在
/run
目录下创建以自身进程 ID 命名的文件(pid 文件 ),记录进程的 PID 。其他进程可通过读取这些文件获取对应进程的 PID,进而实现进程间交互,如向特定进程发送信号。 -
锁文件:
/run/lock
目录用于存放锁文件 。当多个进程需访问共享资源(如打印机、磁盘分区 )时,锁文件能确保同一时间只有一个进程可访问该资源,避免资源竞争引发错误 。 -
socket 文件:进程间可通过在
/run
目录创建和访问 socket 文件进行通信 。例如,DBus(用于进程间通信和软件组件通信的消息总线 )相关的 socket 文件就存于/run/dbus
目录 ,实现不同进程间的消息传递和交互 。
存储系统和服务运行状态信息:
-
systemd 相关:
/run/systemd
目录存储 Systemd 运行时数据 ,涵盖 Systemd 进程、Systemd unit 的状态以及 Systemd journal 等 。Systemd 是 Linux 系统中常用的初始化系统,负责启动和管理系统服务,这些信息对监控和管理系统服务状态很关键 。 -
用户运行时数据:
/run/user
目录下为每个用户创建以其用户 ID 命名的子目录(如/run/user/1000
) ,存放用户运行时文件 ,包括用户进程的 PID 文件、X11 显示变量文件等 ,便于系统管理用户相关运行状态 。
[root@bogon ~]# cd /run [root@bogon run]# ls abrt mcelog.pid alsactl.pid mdadm atd.pid media auditd.pid mount avahi-daemon netreport boltd plymouth chrony ppp console radvd crond.pid rpcbind cron.reboot rpcbind.lock cryptsetup rpcbind.sock cups samba dbus sepermit ......
14、/etc/selinux:
selinux及其配置文件存放目录、用于增强系统的安全性
15、sys:
在 Linux 系统中,/sys
是一个基于内存的虚拟文件系统,用于提供内核数据结构和状态信息,为用户和系统工具提供了一种方便的方式来访问和管理内核和设备的相关信息,是 Linux 系统中非常重要的一部分它具有以下特点和作用:(即:虚拟目录,内核配置信息)
设备相关信息管理:
-
设备树表示:
/sys/devices
目录包含了系统中所有设备的相关信息。每个设备在该目录下都有对应的子目录,例如,硬盘设备可能会有/sys/devices/pci0000:00/0000:00:17.0/ata1/ata1.00
这样的路径,其中包含了设备的各种属性,如设备的厂商、型号、驱动信息等。这些信息对于设备驱动程序的加载和管理非常重要。 -
热插拔设备支持:当设备被插入或拔出时,
/sys
文件系统会实时反映设备的状态变化。例如,当插入一个 USB 设备时,/sys/bus/usb/devices
目录下会动态生成该 USB 设备的相关文件和目录,方便系统和用户获取设备的信息以及进行相应的操作。
内核参数和状态获取:
-
内核参数查看与修改:
/sys/kernel
目录包含了许多与内核相关的参数和状态信息。例如,/sys/kernel/mm
目录下的文件可以用于查看和调整内存管理相关的参数,如内存分配策略、页缓存设置等。一些系统管理员可以通过修改这些参数来优化系统的内存使用。 -
系统状态监控:
/sys/fs
目录下包含了文件系统相关的信息,如文件系统的挂载状态、磁盘使用情况等。通过读取sys/fs
下的文件,可以获取系统中文件系统的详细信息,帮助用户和管理员监控系统的存储状态。
资源管理和控制:
-
CPU 资源管理:
/sys/devices/system/cpu
目录包含了 CPU 相关的信息和控制文件。例如,可以通过该目录下的文件来设置 CPU 的频率、核心的启用和禁用等。一些节能场景下,可以通过修改这些文件来降低 CPU 的功耗。 -
电源管理:
/sys/power
目录用于管理系统的电源状态,如系统的睡眠、唤醒等操作。通过操作该目录下的文件,可以实现对系统电源状态的控制,比如将系统设置为休眠状态或唤醒系统。
[root@bogon run]# cd /sys [root@bogon sys]# ls block dev fs module bus devices hypervisor power class firmware kernel
16、tmp:
在 Linux 系统中/tmp,它是系统的临时目录,有以下特点和用途:(即:临时文件的存放目录)
-
临时文件存储:许多程序在运行过程中会产生临时文件。比如文本编辑器在编辑文件时,可能会创建临时文件用于保存未保存的内容;安装程序在安装过程中也可能使用
/tmp
来存放临时数据。这些临时文件在程序运行结束后可能会被自动删除。 -
会话期间数据暂存:用户在登录系统的会话期间,也可能会使用
/tmp
来临时存放一些数据。例如,用户可能会将一些临时的脚本文件或数据文件存放在/tmp
中,方便在当前会话中使用,会话结束后这些数据可能不再需要。 -
权限设置:
/tmp
目录通常设置为所有用户都可读写执行,这是为了满足不同用户和程序对临时文件的操作需求。但同时,为了系统安全,系统会定期清理/tmp
目录下的文件,删除那些长时间未使用的临时文件,以防止磁盘空间被大量占用。 -
不同文件系统支持:在一些系统中,
/tmp
可能是基于内存的文件系统(如 tmpfs ),这意味着存储在/tmp
中的数据是存放在内存中的,读写速度非常快。这样可以提高程序对临时文件的访问效率,并且在系统重启时,/tmp
中的数据会被自动清除。
[root@bogon sys]# cd /tmp [root@bogon tmp]# ls anaconda.log hsperfdata_root ifcfg.log ks-script-2TRK9P packaging.log program.log sensitive-info.log storage.log systemd-private-bc7735edf97541d28d4cfb3c55b1cddd-bolt.service-ErMdcY systemd-private-bc7735edf97541d28d4cfb3c55b1cddd-chronyd.service-dAe1Xu systemd-private-bc7735edf97541d28d4cfb3c55b1cddd-colord.service-MfNnLC systemd-private-bc7735edf97541d28d4cfb3c55b1cddd-cups.service-k6LuZx systemd-private-bc7735edf97541d28d4cfb3c55b1cddd-rtkit-daemon.service-qBO6L1 tracker-extract-files.0 tracker-extract-files.1000 VMwareDnD vmware-root_808-2965972425 vmware-root_819-4290101131 vmware-root_825-4248221703 vmware-root_832-2730693535 vmware-root_838-2730562456 vmware-root_840-2697008529 vmware-root_850-2689209357 vmware-root_851-4022177747 vmware-root_862-2731217798 vmware-root_867-3988621819 yum.log
17、usr:
在 Linux 系统中,/usr
是一个非常重要的目录,它用于存放用户相关的程序、数据和配置文件等。以下是对 /usr
目录的详细介绍:(即:存放用户程序目录)
-
/usr/bin
:该目录包含了众多用户可执行的命令和应用程序。许多常用的工具软件,如文本编辑器(如vim
、nano
)、文件操作工具(如tar
、gzip
)、网络工具(如wget
、curl
)等都存放在这里。普通用户可以在终端中直接执行这些命令,系统会从/usr/bin
目录中查找对应的可执行文件来运行。 -
/usr/sbin
:主要存放系统管理相关的可执行文件,通常需要管理员权限(如 root 用户)才能执行。例如,系统服务的启动脚本(如httpd
服务的启动脚本)、用户管理工具(如useradd
、userdel
)、磁盘管理工具(如fdisk
)等。这些工具用于系统的配置和管理,对系统的正常运行起着关键作用。 -
/usr/lib
:用于存放系统和应用程序的共享库文件。共享库是多个程序可以共享使用的代码和数据集合,例如 C 标准库(libc.so
)、图形库(libX11.so
)等。应用程序在运行时会从/usr/lib
目录中加载所需的库文件,以实现各种功能。不同架构(如x86
、x86_64
)的库文件可能会分别存放在不同的子目录中(如lib
、lib64
)。 -
/usr/include
:包含了许多头文件,这些头文件用于程序的编译过程。开发人员在编写 C、C++ 等语言的程序时,需要包含这些头文件来引用系统提供的函数和数据结构等。例如,stdio.h
、stdlib.h
等头文件都存放在/usr/include
目录下,程序在编译时会从该目录中查找对应的头文件。 -
/usr/share
:存放可共享的数据,如文档、图标、字体、语言文件等。例如,应用程序的帮助文档(如man
手册页)、系统的图标主题、各种字体文件等都存放在/usr/share
目录下。不同的应用程序会将其可共享的数据存放在/usr/share
的相应子目录中,实现数据的共享和管理。 -
/usr/local
:通常用于存放本地安装的软件。当用户自行编译安装软件时,默认会将软件安装到/usr/local
目录下。/usr/local
目录下也包含bin
、sbin
、lib
、include
等子目录,其结构与/usr
类似,用于存放本地安装软件的可执行文件、库文件、头文件等。
[root@bogon tmp]# cd /usr [root@bogon usr]# ls bin games lib libexec sbin src etc include lib64 local share tmp
18、var:
在 Linux 系统中,/var
是一个重要的系统目录,主要用于存放动态数据。以下是对 /var
目录的详细介绍:(常:log:系统日志目录;spool/mail:邮件文件)
-
/var/log
:这是系统日志文件的主要存储位置。系统的各种服务和应用程序会将运行时产生的日志记录存放在该目录下的不同文件中。例如,/var/log/messages
通常包含系统的一般性消息和错误日志;/var/log/secure
记录与安全相关的事件,如用户登录尝试、权限错误等;/var/log/httpd
(对于 Apache 服务器)或/var/log/nginx
(对于 Nginx 服务器)等子目录则存放 Web 服务器的访问日志和错误日志。通过分析这些日志文件,系统管理员可以了解系统的运行状态、排查故障和进行安全审计。 -
/var/spool
:该目录用于存放等待处理的任务队列和数据。例如,/var/spool/cron
存放计划任务(cron
任务)的相关文件,系统会定期检查这些文件来执行相应的任务;/var/spool/mail
存放用户的邮件数据,邮件服务器会将收到的邮件暂时存放在这里,用户可以通过邮件客户端访问这些邮件;/var/spool/lpd
(对于传统的打印系统)存放打印任务队列,打印服务器会从这里读取待打印的文件并进行打印操作。 -
/var/lib
:用于存放各种应用程序的运行时数据和状态信息。例如,数据库管理系统(如 MySQL 的/var/lib/mysql
)会将数据库文件存放在该目录下;包管理系统(如dpkg
或rpm
)会在/var/lib/dpkg
或/var/lib/rpm
中记录软件包的安装信息和状态;一些服务(如rsyslog
的/var/lib/rsyslog
)也会在/var/lib
下存放其运行时的数据。 -
/var/run
:与/run
类似,/var/run
也用于存放系统运行时产生的临时文件和进程相关的信息。一些旧版本的系统或特定的应用程序可能会将运行时数据存放在/var/run
中,如进程的 PID 文件、socket 文件等。不过,现代 Linux 系统中,/run
是更标准的用于存放此类数据的目录。 -
/var/tmp
:与/tmp
功能相似,用于存放临时文件。但/var/tmp
中的文件通常具有更长的保留时间,一些需要在系统重启后仍然存在的临时数据可能会存放在这里。例如,某些安装程序可能会在/var/tmp
中存放安装过程中产生的临时文件。
[root@bogon usr]# cd /var [root@bogon var]# ls account empty local opt yp adm games lock preserve cache gopher log run crash kerberos mail spool db lib nis tmp
三、查看目录结构命令
命令
1、tree:
在 Linux 系统中,tree
是一个非常实用的文件和目录结构查看工具,可以帮助用户快速直观地了解文件和目录的层次结构,在管理文件和目录时非常方便。如果系统没有预装 tree
,可以使用包管理器进行安装。以下是关于它的详细介绍:
常用选项:
-
-a
:显示所有文件,包括隐藏文件。例如,tree -a
会显示当前目录下的所有文件和目录,包括以.
开头的隐藏文件和目录。 -
-d
:只显示目录,不显示文件。例如,tree -d
只会展示当前目录下的目录结构。 -
-L
:指定显示的目录层级。例如,tree -L 2
表示只显示当前目录下两层的文件和目录结构。 -
-h
:以人类可读的格式显示文件大小。当与其他选项一起使用时,会在显示文件和目录信息时显示文件的大小,并且以 KB、MB、GB 等单位表示。 -
-f
:在每个文件和目录前显示完整路径。例如,tree -f
会在显示的结构中包含文件和目录的完整路径信息。
安装CentOS79源(安装tree命令的源)
[root@bogon yum.repos.d]# rm -rf CentOS-Base.repo [root@bogon yum.repos.d]# ls [root@bogon yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --100 2523 100 2523 0 0 19485 0 --:--:-- --:--:-- --:--:-- 19558 [root@bogon yum.repos.d]# yum makecache fast 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile
-
base: mirrors.aliyun.com
-
extras: mirrors.aliyun.com
-
updates: mirrors.aliyun.com base | 3.6 kB 00:00 extras | 2.9 kB 00:00 updates | 2.9 kB 00:00 (1/4): base/7/x86_64/group_gz | 153 kB 00:00 (2/4): extras/7/x86_64/primary_db | 253 kB 00:00 (3/4): updates/7/x86_64/primary_db | 27 MB 00:05 yum install -y tree base/7/x86_64/primary_db FAILED http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/6d0c3a488c282fe537794b5946b01e28c7f44db79097bb06826e1c0c88bad5ef-primary.sqlite.bz2: [Errno 14] curl#7 - "Failed connect to mirrors.aliyuncs.com:80; Connection refused" 正在尝试其它镜像。 (4/4): base/7/x86_64/primary_db | 6.1 MB 00:01 元数据缓存已建立 [root@bogon yum.repos.d]# yum install -y tree 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile
-
base: mirrors.aliyun.com
-
extras: mirrors.aliyun.com
-
updates: mirrors.aliyun.com 正在解决依赖关系 --> 正在检查事务 ---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装 --> 解决依赖关系完成
依赖关系解决
=========================================================
总下载量:46 k 安装大小:87 k Downloading packages: 警告:/var/cache/yum/x86_64/7/base/packages/tree-1.6.0-10.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY tree-1.6.0-10.el7.x86_64.rpm 的公钥尚未安装 .....略 用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) security@centos.org" 指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 来自 : http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : tree-1.6.0-10.el7.x86_64 1/1 验证中 : tree-1.6.0-10.el7.x86_64 1/1
已安装: tree.x86_64 0:1.6.0-10.el7
完毕!
步骤总结:
1、删除原有的源:rm -rf CentOS-Base.repo
2、查看是否删除:ls
3、生成软件包缓存,输入:yum makecache fast
4、安装软件包,输入:yum install -y tree
完成
[root@bogon yum.repos.d]# tree / / ├── bin -> usr/bin ├── boot │ ├── config-3.10.0-1160.el7.x86_64 │ ├── efi │ │ └── EFI │ │ ├── BOOT │ │ │ ├── BOOTX64.EFI │ │ │ ├── fallback.efi
四、目录结构中重要结构数据
1、网卡地址信息配置文件:
/etc/sysconfig/network-scripts/ifcfg-ens33
说明:网卡文件名称结尾的数字编号n,即为第n+1块网卡信息,ens33表示第一块网卡,ens34表示第二块网卡,以此类推。
2、网络域名配置文件
/etc/resolve.conf
说明:此文件中配置信息,也会影响知己、主机和外网域名地址信息进行通讯。
3、网络本地解析配置文件
/etc/hosts
说明:此文件中配置信息主要编写系统命令和脚本加载信息,主要用于让定指令或脚本在系统启动后自动运行。
4、系统运行状况日志文件
/var/log/messages
说明:此文件中产生信息,为系统或某些服务运行状态信息,会有正常状态输出信息,也会有错误输出信息,主要用于排错使用。
5、自动开机运行脚本或命令文件
/etc/rc.local
说明:此文件中配置主要编写系统命令和脚本加载信息,主要用于让指定命令或脚本在系统启动后自动运行。
五、文件与目录操作指令
1、命令
1、pwd:
pwd
是 “Print Working Directory” 的缩写,是一个用于显示当前工作目录的命令。
选项:-p
Linux 和类 Unix 系统中,pwd -P
是pwd
命令的一个选项,用于以物理路径的形式显示当前工作目录,不包含任何符号链接(symlink)的部分。
-
普通
pwd
命令:默认情况下,pwd
显示的是当前工作目录的逻辑路径,可能包含符号链接。例如,若当前目录是通过符号链接进入的,pwd
会显示符号链接的路径。 -
pwd -P
命令:使用-P
选项后,pwd
会解析符号链接,显示实际的物理路径,即文件或目录在文件系统中的真实位置。
例如,有一个符号链接/home/user/link
指向/var/www/html
,当用户进入/home/user/link
目录后:
-
执行
pwd
命令,会显示/home/user/link
。 -
执行
pwd -P
命令,则会显示/var/www/html
。
(解释:这段文本以具体例子说明在 Linux 和类 Unix 系统中,pwd
命令和pwd -P
命令的不同显示结果。有一个符号链接/home/user/link
,其指向实际路径/var/www/html
。当用户进入/home/user/link
目录后:
-
执行
pwd
命令,显示的是当前工作目录的逻辑路径,也就是符号链接的路径/home/user/link
。 -
执行
pwd -P
命令,该命令会解析符号链接,显示的是实际的物理路径,即文件或目录在文件系统中的真实置/var/www/html
。这体现了pwd -P
命令以物理路径形式显示当前工作目录,不包含符号链接部分的特性)
2、cd:
切换当前工作目录的命令,
*cd..或cd-
作用: 返回上级目录(可多次返回)
*cd~或cd :
作用:返回到当前目录的家目录(例如,在 Linux 系统中,如果当前用户是 test
,主目录一般是 /home/test
,当在任意目录下执行 cd ~
命令后,就会切换到 /home/test
目录。)
*cd /接要切换的目录
作用切换到指定目录
2、目录内容查看指令
ls命令
列出当前目录下的所有文件和子目录
*-a,--all:显示所有文件(包括以.开头的隐藏文件)
[root@bogon ~]# ls -a . .cache .lesshst 图片 .. .config .local 文档 anaconda-ks.cfg .cshrc .tcshrc 下载 .bash_history .dbus .viminfo 音乐 .bash_logout .esd_auth 公共 桌面 .bash_profile .ICEauthority 模板 .bashrc initial-setup-ks.cfg 视频
-l:*使用详细列表格式显示文件或目录的详细信息**
[root@bogon ~]# ls -l 总用量 8 -rw-------. 1 root root 1700 5月 8 00:04 anaconda-ks.cfg -rw-r--r--. 1 root root 1748 5月 8 00:20 initial-setup-ks.cfg drwxr-xr-x. 2 root root 6 5月 8 00:48 公共 drwxr-xr-x. 2 root root 6 5月
*-h:使用人类可读的格式显示文件大小
[root@bogon ~]# ls -h anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
*-r:以相反的顺序列出文件
[root@bogon ~]# ls -h anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面 [root@bogon ~]# ls -hr 桌面 下载 图片 模板 initial-setup-ks.cfg 音乐 文档 视频 公共 anaconda-ks.cfg
*-t:按照修改时间排序(最新的文件在前),并且结合l使用。
[root@bogon ~]# ls -tl 总用量 8 drwxr-xr-x. 2 root root 6 5月 8 00:48 视频 drwxr-xr-x. 2 root root 6 5月 8 00:48 公共 drwxr-xr-x. 2 root root 6 5月 8 00:48 模板 drwxr-xr-x. 2 root root 6 5月 8 00:48 图片 drwxr-xr-x. 2 root root 6 5月 8 00:48 文档
*-s:按文件大小排序
*-d` :用于仅列出目录本身,而非目录下的文件列表。
-
效果:只显示当前目录下的所有子目录名称,不显示文件。
-
示例:如果当前目录包含
dir1/
、dir2/
和file.txt
,执行ls -d */
后输出:dir1/ dir2/子目录。
*-i:显示每个文件和目录的inode号
node 是文件系统中存储文件元数据(如权限、所有者、创建时间等)的结构,每个文件和目录在文件系统中都有唯一的 inode 号码。
[root@bogon ~]# ls -i 100663362 anaconda-ks.cfg 33713582 图片 100663363 initial-setup-ks.cfg 102344117 文档 68800666 公共 3787 下载 33713581 模板 3788 音乐 68800667 视频 102344116 桌面
*--color=auto:自动根据文件类型显示不同颜色
*-R:递归列出目录及其目录中的文件
[root@bogon ~]# ls -R .: anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
./公共:
./模板:
3、文件查看命令
1、cat
功能:
*一次显示整个文件
[root@bogon ~]# cat -n /etc/passwd 1 root❌0:0:root:/root:/bin/bash 2 bin❌1:1:bin:/bin:/sbin/nologin 3 daemon❌2:2:daemon:/sbin:/sbin/nologin 4 adm❌3:4:adm:/var/adm:/sbin/nologin 5 lp❌4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync❌5:0:sync:/sbin:/bin/sync 7 shutdown❌6:0:shutdown:/sbin:/sbin/shutdown 8 halt❌7:0:halt:/sbin:/sbin/halt
*从键盘创建一个文件:cat>filename 只能创建新文件,不能编辑已有文件。
[root@bogon ~]# cat /etc/passwd >newfile [root@bogon ~]# cat newfile root❌0:0:root:/root:/bin/bash bin❌1:1:bin:/bin:/sbin/nologin daemon❌2:2:daemon:/sbin:/sbin/nologin adm❌3:4:adm:/var/adm:/sbin/nologin lp❌4:7:lp:/var/spool/lpd:/sbin/nologin sync❌5:0:sync:/sbin:/bin/sync
*将几个文件合并为一个文件:cat file1 file2>file3
例1:
[root@bogon ~]# cat <<e>>2.txt
1234 23 e [root@bogon ~]# cat 2.txt 1234 23
例2:
[root@bogon ~]# cat <<e>>2.txt
1234 23 e [root@bogon ~]# cat 2.txt 1234 23 [root@bogon ~]# cat <<e>>3.txt 1 e [root@bogon ~]# cat <<e>>4.txt 222 e [root@bogon ~]# cat 2.txt 3.txt >>4.txt [root@bogon ~]# cat 4.txt 222 1234 23 1
*追加内容到指定文件。
[root@bogon ~]# cat /etc/passwd >>newfile [root@bogon ~]# cat newfile root❌0:0:root:/root:/bin/bash bin❌1:1:bin:/bin:/sbin/nologin daemon❌2:2:daemon:/sbin:/sbin/nologin adm❌3:4:adm:/var/adm:/sbin/nologin lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
4、选项
*-n:显示行号
*-e:在输出的行尾添加制表符和换行符