hello,大家好,今天这篇文章为大家开启一个新的板块,该板块着重讲解Linux操作系统相关基础知识,需要注意的是,本系列全部文章Linux环境均为vaware搭载的Ubuntu虚拟机环境。本文首先厘清Linux目录结构。
一切皆文件
理解Linux目录结构的核心,只需要记住一句话——“一切皆文件”,Linux系统里,鼠标、内存、进程、socket等等,皆以文件形式呈现,均可通过文件形式访问管理。本文后续部分也将通过“一切皆文件”这一思想进行讲述。
目录结构
下图为Linux典型的目录结构:
bin
bin文件主要存放二进制可执行文件,常见的linux命令均存放在此目录下,下图为bin目录内容截图:
可以发现,常用的ps、cp、ping、cat、tar等命令均在bin文件夹下,下图为常见命令cat以及ping的执行示意:
etc
etc目录主要存放系统管理需要的配置文件,下图为etc目录内容截图:
可以常用的配置文件hosts、profile、bash.bashrc、ssh均在此目录下,hosts存放主机名与ip地址的对应关系,下图为hosts文件内容:
下图为etc/resolv.conf文件内容,此文件用于设置DNS服务器的IP地址,若nameserver关键字未指定,则域名解析时找不到DNS服务器。
dev
dev目录下存放的是 Linux 的外部设备,下图为dev目录下的文件截图:
之所以说linux系统一切皆文件,在此文件夹下便有很好的体现,/dev/input文件夹下mice便是我们常用的鼠标了,下图为打开mice文件的记录:
可以发现,鼠标作为linux外设,同样是以文件的方式存储的,可以通过cat命令打开并读取鼠标的移动,这便很好的验证了“linux所见皆文件”的核心思想了。另外,dev/null文件较为特殊,为文件黑洞,丢弃一切写入其中的数据,下图为一个典型示例:
另外dev/random与dev/urandom为两个伪随机设备,可以产生伪随机字节流数据,区别在于random依赖于系统中断,因此使用cat进行读取时会出现卡顿现象,而urandom不依赖系统中断,下图为读取urandom示例,需要注意的是二进制数据流难以阅读,需要转换为十六进制进行查看。
lib
lib文件夹存放系统库文件,下图为lib文件夹的内容截图,
较为典型的C语言库libc.so.6便存放在x86_64_linux_gnu文件夹下。
home
home文件夹便不过多赘述,存放用户文件。
root
root目录为系统管理员的家目录,需要root权限方可查看。
boot
此目录存放系统启动时的必要文件。
usr
此目录并非望文生义的user目录,而是unix shared resources的缩写,是一个非常重要的目录,类似与Windows系统下的program files目录,我们用到的应用程序以及各种库文件二进制文件几乎都存放于此目录下,下图为usr目录内容:
下图为/usr/include文件内容,可以发现我们程序常用的头文件均存放在此目录下:
proc
/proc 是一种虚拟文件系统,存储的是当前内核运行状态的一系列特殊文件,它是系统内存的映射,储存不在硬盘上而是在内存里。
我们可以修改icmp_echo_ignore_all文件,使得他人无法ping通我们的linux虚拟机,下图为演示示例:
echo 1 > icmp_echo_ignore_all
复制
echo 0 > icmp_echo_ignore_all
复制
run
/run目录是一个临时文件系统,存储系统启动以来的信息,在系统重启时,run目录下的文件会被清除以保存下一次系统启动后的信息。
var
var文件夹下存放着可能发生变化的文件,包括/log日志文件,/mail电子邮件,/lib库文件等,下图为var目录结构:
后记
linux目录结构到此就介绍完啦,与用户经常打交道的几个目录有etc、usr,理解了linux目录结构以及每个目录存放的文件类型及功能,对学习Linux操作系统有很大的裨益。欢迎大家勘误或提出有效建议(seuhyz@163.com)。