2023-05-20    2023-11-16    1696 字  4 分钟

目录简介

Linux中一切皆文件,这些文件按照一定的规则存放在不同的目录当中。为了能够快速找到文件及以后的操作的规范性,我们必须记清楚Linux的目录结构。

Windows以多根的方式组织文件,如C:\ D:\ E:\,而Linux以单跟/的方式组织文件。

CentOS 7 目录结构

目录规范

命令相关目录

/bin: 普通用户使用的命令。例如:/bin/ls; /bin/date

/sbin: 超级管理员使用的命令。例如/sbin/service;/sbin/useradd

普通用户无法使用useradd的命令

1
2
[snoopy@localhost ~]$ useradd jack
-bash: /usr/sbin/useradd: Permission denied

用户家目录

用户家目录是用户在登录系统后默认进入的目录,用户可以在这个目录下存储个人文件和目录。就像Windows一样,不同的用户登陆系统显示的桌面环境是不一样的。

/home: 存放普通用户的家目录。

/root: 超级管理员root的家目录,普通用户无操作权限。

系统文件目录

/usr: 相当于C:\Windows

/usr/local: 通常用于存放用户自行编译安装的软件,相当于C:\Program File

/usr/bin: 普通用户使用的应用程序(重要)。

/usr/sbin: 超级管理员使用的应用程序(重要)。

/usr/lib: 库文件Glibc 32bit。若删除可能导致命令不可用。可通ldd命令查看命令依赖的库文件,如ldd /usr/bin/ls.

/usr/lib64: 库文件Glibc 64bit。若删除可能导致命令不可用。

启动目录

/boot: 存放的系统启动相关的文件,例如kernelgrub(引导装载程序)等。

[root@localhost ~]# ll /boot | grep vm
-rwxr-xr-x. 1 root root  6639904 Jul 24 23:38 vmlinuz-0-rescue-cc09b6cf7038418bae14d61df6427b48
-rwxr-xr-x. 1 root root  6639904 Nov  9  2018 vmlinuz-3.10.0-957.el7.x86_64

下图说明/boot目录下有关于开机引导相关的文件。

开机引导页面

配置文件目录

/etc: 配置文件目录。极其重要,后续所有服务的配置文件都在这个目录中。

/etc/sysconfig/network-scripts/ifcfg-: 网络配置文件。

/etc/hostname: 主机名。

/etc/resolv.conf: 更改DNS,优先级小于网络配置文件中的DNS。具体格式如下:

1
2
3
4
5
[root@localhost ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.254
nameserver 114.114.114.114

/etc/hosts: 本地域名解析文件,相当于Windows中的C:\Windows\System32\drivers\etc\hosts文件。

1
2
3
4
[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.201	www.node.com

测试解析结果

1
2
3
4
[root@localhost ~]# ping www.node.com
PING www.node.com (10.0.0.201) 56(84) bytes of data.
64 bytes from www.node.com (10.0.0.201): icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from www.node.com (10.0.0.201): icmp_seq=2 ttl=64 time=0.050 ms

可变项目与临时目录

/var: 非常重要的目录,用于存储经常变动的文件,例如日志文件、临时文件等。例如日志文件通常会存储到/var/log/目录下。 查看登陆到服务器的用户:

1
2
3
4
5
[root@localhost log]# cat /var/log/secure
# 从192.168.199.1接受了一个root的密码。端口为12892
Nov  7 04:12:51 localhost sshd[10695]: Accepted password for root from 192.168.199.1 port 12892 ssh2
# 为root用户打开了一个会话。
Nov  7 04:12:51 localhost sshd[10695]: pam_unix(sshd:session): session opened for user root by (uid=0)

/tmp: 存储临时文件。这些文件通常是应用程序在运行期间创建的临时文件或缓存文件,用于加速某些操作或处理。

/run: 一个临时目录,用于存放应用程序在运行期间需要的一些短暂存在的文件,比如socketpid文件。

1
[root@localhost ~]# cat /run/sshd.pid

设备目录文件

/dev: 存放设备文件。比如硬盘、分区、光驱、会话终端等。

/dev/sd: 硬盘分区及硬盘分区。例如sda sdb sdc等。

1
2
3
4
5
[root@localhost log]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Jul 26 14:06 /dev/sda
brw-rw----. 1 root disk 8, 1 Jul 26 14:06 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jul 26 14:06 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jul 26 14:06 /dev/sda3

/dev/null: 黑洞设备,只进不出。

/dev/zero: 源源不断的产生数据。

1
2
3
4
5
6
[root@localhost ~]# dd if=/dev/zero of=/opt/test.txt bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 19.7035 s, 54.5 MB/s
[root@localhost ~]# ll -h /opt/test.txt 
-rw-r--r--. 1 root root 1.0G Jul 26 15:30 /opt/test.txt

/dev/random: 生产随机数的设备。

1
2
3
4
5
6
[root@localhost ~]# echo $RANDOM
29939
[root@localhost ~]# echo $RANDOM
26472
[root@localhost ~]# echo $RANDOM
22698

虚拟的文件系统

/proc: 反应当前系统正在运行的进程实时状态。 例:

查看ping相关的服务进程。

1
2
[root@localhost ~]# ps -ef | grep ping
root      10748  10607  0 04:15 pts/0    00:00:00 ping baidu.com

/proc中可以查看到这个进程号所对应的文件。

1
2
3
4
5
6
7
8
[root@localhost ~]# ll /proc/10748
total 0
dr-xr-xr-x. 2 root root 0 Nov  7 04:16 attr
-rw-r--r--. 1 root root 0 Nov  7 04:16 autogroup
-r--------. 1 root root 0 Nov  7 04:16 auxv
-r--r--r--. 1 root root 0 Nov  7 04:16 cgroup
--w-------. 1 root root 0 Nov  7 04:16 clear_refs
...

停止ping后,查看这个进程号所对应的文件。

1
2
[root@localhost ~]# ll /proc/10748
ls: cannot access /proc/10748: No such file or directory

软连接形式目录

CentOS7/bin,/sbin,/lib,/lib64都是以软链接的形式连接到/usr目录下。

1
2
3
4
5
[root@localhost ~]# ll / | grep lr
lrwxrwxrwx.   1 root root    7 Jul 24 23:31 bin -> usr/bin
lrwxrwxrwx.   1 root root    7 Jul 24 23:31 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jul 24 23:31 lib64 -> usr/lib64
lrwxrwxrwx.   1 root root    8 Jul 24 23:31 sbin -> usr/sbin

其他目录

/media: 提供设备的挂载点。

/mnt: 提供设备的挂载点。

挂载光盘到/mnt目录。

1
2
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

/opt: 一个可选的软件安装目录,可以用于存放第三方软件。这个目录是用户级的程序目录,可以理解为D:/Software


image-20231028232834657