前言
最近在复习linux,发现有些目录总是忘记内容,发现有些还是得从原义和实际例子去理解会记忆深刻些。以下是个人的一些理解
Linux目录
常见的Linux下的目录如下:
1. 根目录 /
(Root Directory)
- 英文含义:
/
是文件系统的根(root)目录。它是所有文件和目录的起点,类似于树的根,所有其他文件夹和文件都是从这里延伸出来的。 - 作用:作为文件系统的根目录,它是所有路径的起始点。
- PS:根目录在系统启动初期可能是只读挂载的,普通用户无法直接在根目录下创建文件,只有管理员(root 用户)有权限操作。
- 实际例子:运行
ls /
可以列出根目录下的所有子目录
2. /bin
(Binary Files)
-
英文含义:
bin
是 “binary”(二进制)的缩写,表示存放可执行程序的地方。这些二进制文件是操作系统和用户交互的基本命令。 -
作用:包含启动和运行操作系统所需的基本命令。这里的命令是系统和用户都可以使用的,甚至在单用户模式下也可以执行。
-
常见文件:
/bin/ls
:列出当前目录下的文件和文件夹(ls
是 “list” 的缩写)。/bin/cp
:复制文件或目录(cp
是 “copy” 的缩写)。/bin/mv
:移动或重命名文件或目录(mv
是 “move” 的缩写)。/bin/rm
:删除文件或目录(rm
是 “remove” 的缩写)。
-
PS:在现代 Linux 发行版中,
/bin
有时会符号链接到/usr/bin
,这是因为 Filesystem Hierarchy Standard (FHS) 的演进,旨在统一二进制文件存放位置。 -
实际例子:运行
which ls
会返回/bin/ls
,告诉你ls
命令的具体路径。
3. /sbin
(System Binary Files)
- 英文含义:
sbin
是 “system binary”(系统二进制)的缩写,存放的是需要管理员权限来执行的系统管理命令。 - 作用:包含系统管理和维护所需的命令,普通用户一般不需要使用这些命令,除非是系统管理员。
- 常见文件:
/sbin/init
:系统初始化进程,是系统启动时运行的第一个程序。/sbin/reboot
:重启系统的命令。/sbin/shutdown
:关闭系统的命令。
- PS:这些命令通常需要超级用户权限(
sudo
),普通用户尝试直接运行会提示权限不足。 - 实际例子:执行
sudo /sbin/fdisk -l
可以列出磁盘分区信息(需要 root 权限)。这些命令通常用于系统维护和调试。
4. /etc
(Etcetera - Configuration Files)
- 英文含义:
etc
是 “et cetera”(等等)的缩写,虽然这个名字没有直接说明它的内容,但通常用于存放系统配置文件(历史遗留问题,遗传unix)。 - 作用:包含所有系统和程序的配置文件。通常会在这里配置一些与程序、用户、服务等相关的设置。
- 常见文件:
/etc/passwd
:存储用户账户信息的文件。这里包括每个用户的用户名、密码、UID 和 GID 等信息。/etc/fstab
:用于系统启动时挂载文件系统的配置文件。/etc/hostname
:存储系统主机名的文件。/etc/network/interfaces
:配置网络接口的文件。
- PS:
/etc
不仅是系统配置的中心,许多服务的配置文件也集中在这里,例如 Apache、Nginx 或 SSH。 - 常见文件补充:
/etc/resolv.conf
:定义 DNS 服务器地址,用于网络域名解析。/etc/crontab
:系统级别的定时任务配置文件。
- 实际例子:编辑
/etc/hosts
可以添加本地主机名解析,例如127.0.0.1 mylocalserver
。你可以在这些配置文件中修改系统和服务的行为。
5. /home
(Home Directories)
- 英文含义:
home
目录存放的是每个用户的家目录。这里是每个用户存放个人文件的地方。 - 作用:存放用户个人文件,会在这里存放自己的代码、文档等文件。
- 常见文件:
/home/username
:每个用户的个人目录,username
是你的用户名。例如,如果你的用户名是oy
,你的家目录就是/home/oy
。
- PS:用户的家目录通常包含隐藏文件(以
.
开头),如.bashrc
或.profile
,用于配置用户的 shell 环境。 - 实际例子:在
/home/username
下运行ls -a
可以看到.bash_history
,记录用户执行过的命令历史。
6. /var
(Variable Files)
- 英文含义:
var
是 “variable”(可变的)的缩写,表示存放那些内容经常变化的文件。通常包括日志、缓存、队列等。 - 作用:存放程序运行时产生的动态数据,比如日志文件、缓存文件等。
- 常见文件:
/var/log
:存放日志文件的目录。可以在这里查看系统和应用程序的日志信息,用来调试程序。/var/tmp
:存放临时文件的目录,这些文件在系统重启后可能还会存在。/var/spool
:存放程序任务队列文件,比如邮件队列、打印队列等。
- PS:
/var
的内容通常与系统运行时间相关,占用空间可能会随时间增长,因此需要定期清理(如日志文件)。 - 常见文件补充:
/var/mail
:存放用户邮件的目录(如果系统配置了邮件服务)。
- 实际例子:运行
tail -f /var/log/syslog
可以实时查看系统日志,用于调试。
7. /lib
和 /lib64
(Libraries)
- 英文含义:
lib
是 “library”(库)的缩写,包含了程序运行所依赖的共享库文件。 - 作用:存放系统和应用程序使用的共享库文件。共享库文件包含了程序运行时需要的函数、代码等。
- 常见文件:
/lib/libc.so
:C 标准库的共享库文件,很多程序都依赖它。/lib64/libc.so
:64 位版本的 C 标准库共享库文件。
- PS:
/lib64
只存在于 64 位系统上,用于区分 32 位和 64 位库文件。32 位库可能存放在/lib32
。 - 实际例子:运行
ldd /bin/ls
可以查看ls
命令依赖的共享库文件路径。
8. /tmp
(Temporary Files)
- 英文含义:
tmp
是 “temporary”(临时的)的缩写,表示存放临时文件的地方。 - 作用:用于存储系统或应用程序在运行过程中产生的临时文件。通常这些文件不会永久保留,系统重启后有时会被清除。
- 常见文件:
/tmp
:存放临时文件的目录,程序在运行时可能会创建文件存放在这里。比如安装程序临时解压的文件、应用程序的缓存文件等。
- PS:
/tmp
的内容通常由系统服务(如tmpfiles.d
)或重启时自动清理,清理规则可能在/etc/tmpfiles.d/
中定义。 - 实际例子:运行
echo "test" > /tmp/testfile
创建临时文件,重启后检查是否被清除。在处理临时数据时,可能会使用这个目录来存放文件,确保数据不会占用永久存储空间。
9. /dev
(Device Files)
- 英文含义:
dev
是 “devices”(设备)的缩写,表示设备文件的目录。 - 作用:存放所有设备文件,这些设备文件让用户和应用程序可以与硬件设备进行交互。设备文件可以是硬盘、键盘、显示器、串口等设备的接口。
- 常见文件:
/dev/sda
:表示系统中的第一个硬盘。/dev/tty
:表示终端设备,用于用户与系统交互的控制台。/dev/null
:空设备,写入它的所有数据都会丢失。常用它来丢弃不需要的输出。
- PS:Linux 遵循“一切皆文件”的哲学,设备文件分为字符设备(如
/dev/tty
)和块设备(如/dev/sda
)。 - 常见文件补充:
/dev/random
和/dev/urandom
:生成随机数的伪设备文件,常用于加密或测试。
- 实际例子:运行
cat /dev/urandom | head -c 10
可以生成 10 字节的随机数据。常常会通过设备文件来与硬件设备进行交互,例如读写硬盘,控制外部设备等。
10. /mnt
(Mount Points)
- 英文含义:
mnt
是 “mount”(挂载)的缩写,表示挂载点的目录。 - 作用:用于临时挂载文件系统的目录。当你挂载一个磁盘或其他文件系统时,它的内容会显示在
/mnt
下的子目录中。 - 常见文件:
/mnt
:这个目录通常为空,系统管理员可以在这里挂载外部存储设备或分区。比如,挂载一个 USB 驱动器时,可能会在/mnt/usb
下显示该驱动器的文件系统。
- PS:与
/mnt
类似,/media
也常用于挂载,但/media
更倾向于用户手动挂载的设备(如 U 盘)。 - 实际例子:运行
sudo mount /dev/sdb1 /mnt
将第二个硬盘的第一个分区挂载到/mnt
。有时会使用这个目录来挂载外部存储或进行调试。
11. /opt
(Optional Add-on Software Packages)
- 英文含义:
opt
是 “optional”(可选的)的缩写,表示可选的附加软件包。 - 作用:存放可选的第三方软件包及其相关文件。与
/usr
目录类似,但/opt
通常用于那些不属于系统基础安装的软件。 - 常见文件:
/opt
:存放附加软件的目录。比如你安装了一些额外的第三方应用程序,它们通常会存放在这里。
- PS:
/opt
中的软件通常自成体系,包含自己的子目录(如/opt/appname/bin
),便于独立管理。 - 实际例子:安装 Google Chrome 时,它可能被放置在
/opt/google/chrome
。一般会在这里安装一些额外的应用程序或库,以便开发自己的应用。
12. /usr
(User Programs)
- 英文含义:
usr
是 “user”(用户的)或 “Unix System Resources”(Unix 系统资源)的缩写。 - 作用:存放系统和应用程序的可执行文件、库文件以及共享数据等。这个目录包含了大部分的用户程序和资源文件。
- 常见文件:
/usr/bin
:存放用户应用程序的命令。/usr/lib
:存放系统和程序使用的库文件。/usr/share
:存放共享数据文件,如文档、图标、语言文件等。/usr/local
:存放本地安装的应用程序,通常由管理员手动安装,不属于系统默认软件。
- PS:
/usr
是系统安装后的大本营,通常占用较多磁盘空间。/usr/local
是用户自定义安装的首选位置,避免与系统包管理器冲突。 - 常见文件补充:
/usr/include
:存放 C/C++ 的头文件,编译程序时需要。
- 实际例子:运行
/usr/bin/python3
启动系统安装的 Python 解释器。通常会在/usr
下存放安装的软件包和共享资源。
13. /srv
(Service Data)
- 英文含义:
srv
是 “service”(服务)的缩写,表示服务数据的目录。 - 作用:存放服务提供的数据,通常是系统服务或者用户服务的文件。例如,网站的页面文件、数据库文件等。
- 常见文件:
/srv/www
:存放 Web 服务器的数据文件,如网站的文件。/srv/ftp
:存放 FTP 服务器的数据文件。
- PS:
/srv
的使用因系统而异,有些发行版可能不默认使用,管理员可以根据需要自定义。 - 实际例子:运行 Nginx 时,可以将网站文件放在
/srv/www/html
。可能会在这里放置由服务器提供的数据或文件,如网站文件、数据库文件等。
14. /sys
(System Information)
- 英文含义:
sys
是 “system”(系统)的缩写,表示系统信息的目录。 - 作用:提供关于系统内核和硬件的实时信息。这里存放了很多虚拟文件,它们代表了系统的状态,可以通过读取这些文件来获取系统的运行状态。
- 常见文件:
/sys/class
:存放系统硬件的信息,如网络设备、存储设备等。/sys/fs
:存放文件系统的信息,如挂载的文件系统。
- PS:
/sys
是 sysfs 文件系统的一部分,与/proc
类似,但更专注于硬件和内核参数。
15. /proc
(Process Information)
- 英文含义:
proc
是 “process”(进程)的缩写,表示进程信息的目录。 - 作用:提供关于运行中的进程、内核等信息。这个目录下的文件是虚拟文件,它们不存储数据,而是内核实时生成的数据。可以用它来监控系统状态,获取进程信息。
- 常见文件:
/proc/cpuinfo
:显示 CPU 信息。/proc/meminfo
:显示内存使用情况。/proc/[pid]
:每个进程都有一个对应的目录,[pid]
是进程 ID。你可以在这里查看进程的内存、CPU 使用情况等。
- PS:
/proc
是 procfs 文件系统,内容完全动态生成,占用内存而非磁盘空间。 - 常见文件补充:
/proc/uptime
:显示系统运行时间(秒)和空闲时间。
- 实际例子:运行
cat /proc/self/stat
查看当前进程(即cat
命令本身)的状态。可以通过/proc
目录获取系统资源的详细信息,用于性能监控或调试。
16. /boot
(Boot Loader Files)
- 英文含义:
boot
是 “bootstrap”(引导)的缩写,表示系统启动相关文件。 - 作用:存放启动加载程序(bootloader,如 GRUB)和内核映像文件。
- 常见文件:
/boot/vmlinuz
:压缩的 Linux 内核文件。/boot/grub/grub.cfg
:GRUB 引导配置文件。
17. /run
(Runtime Data)
- 英文含义:
run
表示运行时数据。 - 作用:存放系统运行时的临时文件(如 PID 文件或锁文件),通常在重启后清空。
- 常见文件:
/run/lock
:存放锁文件,防止多个进程冲突。
- 实际例子:运行
cat /run/mysqld/mysqld.pid
查看 MySQL 服务的进程 ID。
18. /lost+found
- 英文含义:表示“丢失并找到”的文件。
- 作用:在文件系统检查(如
fsck
)后,损坏或未链接的文件会存放在这里。
建议
自己手动查看一下目录