Linux目录结构

配套视频: space.bilibili.com/204411292

目录简介

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

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

目录规范

命令相关目录

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

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

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

typescript 复制代码
[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(引导装载程序)等。

ruby 复制代码
[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。具体格式如下:

csharp 复制代码
[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文件。

csharp 复制代码
[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

测试解析结果

ini 复制代码
[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/目录下。 查看登陆到服务器的用户:

ini 复制代码
[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文件。

csharp 复制代码
[root@localhost ~]# cat /run/sshd.pid

设备目录文件

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

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

bash 复制代码
[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: 源源不断的产生数据。

typescript 复制代码
[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: 生产随机数的设备。

csharp 复制代码
[root@localhost ~]# echo $RANDOM
29939
[root@localhost ~]# echo $RANDOM
26472
[root@localhost ~]# echo $RANDOM
22698

虚拟的文件系统

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

查看ping相关的服务进程。

csharp 复制代码
[root@localhost ~]# ps -ef | grep ping
root      10748  10607  0 04:15 pts/0    00:00:00 ping baidu.com

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

sql 复制代码
[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后,查看这个进程号所对应的文件。

bash 复制代码
[root@localhost ~]# ll /proc/10748
ls: cannot access /proc/10748: No such file or directory

软连接形式目录

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

bash 复制代码
[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目录。

perl 复制代码
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

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

相关推荐
荣--2 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森2 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜3 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB4 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220706 天前
如何搭建本地yum源(上)
运维
大树889 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质9 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工9 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信