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

相关推荐
hsjcjh1 小时前
Nodemailer使用教程:在Node.js中发送电子邮件
linux·运维·node.js
没有梦想的咸鱼185-1037-16632 小时前
北斗高精度数据解算:破解城市峡谷/长基线/无网区难题,从毫米级定位到自动化交付——(GAMIT/GLOBK底层核心解算技术方法)
运维·arcgis·数据分析·自动化
不怕犯错,就怕不做2 小时前
linux 如何查看自己的帐号密码及samba的帐号和密码
linux·运维·服务器
实在智能RPA2 小时前
Agent 在物流行业能实现哪些自动化?——深度拆解 AI Agent 驱动的智慧物流新范式
运维·人工智能·ai·自动化
张3232 小时前
Linux 启动过程
linux·运维
李彦亮老师(本人)3 小时前
Rocky Linux 9.x 新特性详解
linux·运维·服务器·centos·rocky linux
芳草萋萋鹦鹉洲哦4 小时前
【windows】nginx如何注册为开机自启的服务(WinSW实现)
运维·windows·nginx
猩猩—点灯5 小时前
部署远程利器-RustDesk
运维·服务器·网络
biubiubiu07066 小时前
Linux 中 `source` 和 `systemctl daemon-reload` 的区别与踩坑点
linux·运维·服务器