目录简介
在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 : 存放的系统启动相关的文件,例如kernel
,grub
(引导装载程序)等。
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 : 一个临时目录,用于存放应用程序在运行期间需要的一些短暂存在的文件,比如socket
和pid
文件。
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
。