学习Linux重要目录结构详解,Linux和Windows目录结构是不同的,这里记录一下Linux下目录的结构,以及各个目录的做用是什么。node
硬盘编号和分区编号
在理解Linux目录结构前,有必要大体了解一下Linux系统下硬盘编号和分区编号的方式,主要有以下几种命名方式,Windows下硬盘编号就是C盘、D盘、E盘等。mysql
(1)IDE硬盘:硬盘编号为hda,hdb...,对应的分区编号为硬盘编号加数字,如hda1,hda2...。linux
(2)SAS/SATA/SCSI/USB:硬盘编号为sda,sdb...,分别表明第一块硬盘,第二块硬盘...,对应的分区编号为sda1,sda2...,表明第一块硬盘上的第一个分区,第二个分区...。sql
(3)xvdx,x为a到z:Xen虚拟机硬盘。vim
关于几种硬盘的主要区别后面补充,反正个人9年历史宏基电脑硬盘使用的是IDE,而后刚组装的台式机使用的是SATA硬盘。centos
那么问题来了,若是是Window下的文件夹,若是一个文件在C盘,那么它不可能在D盘,而且文件下的子文件也只能在C盘。对于Linux来讲就不必定了,好比/etc目录可能在sda1,可是/etc下的子目录可能有在sda2的,因此文件在哪一个目录不能肯定它在哪一个盘,这是跟Window的区别。浏览器
主分区和扩展分区
主分区:主要安装操做系统用,也能够存储数据。tomcat
扩展分区:不能直接使用,须要在分区上创建逻辑分区才能使用。bash
逻辑分区:只能用于存储数据,不能用于系统安装。服务器
分区表
MBR:比较旧的分区,使用MBR做为引导(一共446字节),而且里面66字节用于保存分区信息,此分区最大支持4个主分区和2TB容量,这种分区的电脑最多只能安装4个操做系统。
GPT(GUID):取消了扩展分区,全部的分区均可以作为主分区,支持硬盘容量18EB,安装操做系统数目无限定,如今新的电脑通常采用它,若是你的硬盘是2T以上,就建议使用GPT分区。
经常使用的分区工具,MBR下有fdisk,GPT下有parted,此外df -h或blkid -h能够查看分区信息。
1 [root@node02 ~]]# fdisk -l 2 3 Disk /dev/sda: 21.5 GB, 21474836480 bytes 4 255 heads, 63 sectors/track, 2610 cylinders 5 Units = cylinders of 16065 * 512 = 8225280 bytes 6 Sector size (logical/physical): 512 bytes / 512 bytes 7 I/O size (minimum/optimal): 512 bytes / 512 bytes 8 Disk identifier: 0x0000198b 9 10 Device Boot Start End Blocks Id System 11 /dev/sda1 * 1 26 204800 83 Linux 12 Partition 1 does not end on cylinder boundary. 13 /dev/sda2 26 2350 18668544 83 Linux 14 /dev/sda3 2350 2611 2097152 82 Linux swap / Solaris 15 [root@node02 ~]]# parted -l 16 Model: VMware, VMware Virtual S (scsi) 17 Disk /dev/sda: 21.5GB 18 Sector size (logical/physical): 512B/512B 19 Partition Table: msdos 20 21 Number Start End Size Type File system Flags 22 1 1049kB 211MB 210MB primary ext4 boot 23 2 211MB 19.3GB 19.1GB primary ext4 24 3 19.3GB 21.5GB 2147MB primary linux-swap(v1) 25 26 27 Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 28 has been opened read-only. 29 Error: Invalid partition table - recursive partition on /dev/sr0. 30 Ignore/Cancel? Cancel 31 32 [root@node02 ~]]# df -h 33 Filesystem Size Used Avail Use% Mounted on 34 /dev/sda2 18G 2.0G 15G 12% / 35 tmpfs 931M 0 931M 0% /dev/shm 36 /dev/sda1 194M 34M 151M 19% /boot 37 38 [root@node02 ~]]# blkid 39 /dev/sda2: UUID="8588ff17-82cc-48c0-b582-896a032f4dea" TYPE="ext4" 40 /dev/sda1: UUID="379bd3e4-f3f3-43d1-af9d-0d3542f644f2" TYPE="ext4" 41 /dev/sda3: UUID="e0f7f0cf-9420-448e-bcfe-08bdb5cb1b49" TYPE="swap"
从上面能够看出文件系统为ext4,它是ext3的升级版,简单来讲是一种很是强大的文件系统,支持更大的文件和文件系统,且支持延迟分配(文件在cache中写完才开始分配数据块并写入磁盘)、持久预分配(下载时能够预先在磁盘中建立一个相同大小的空文件,避免下载时间过长致使空间不足)、无限数量的子目录。
挂载
Linux里的分区默认是不能访问的,咱们经过命令能够访问到里面的内容,实际上是连接的过程,好比访问/etc,实际上是可能连接到了/dev/sda1,这个过程称为挂载。/etc就是挂载点。
挂载:为分区找一个入口。
挂载点:分区入口的目录名。
举例分析,如图所示,访问/dev/cdrom,即光盘里的内容发现访问不了。
发现没法访问
挂载一下,经过访问mnt,来实现对光盘内容的访问。
卸载mnt,再次查看发现已经没有了内容。
目录结构
首先上一张目录结构的树形图,而后一个一个记录它的做用。
/bin
是binary的缩写,存放用户模式下能够操做的命令,以下图所示,如rm命令,当使用which rm后,显示路径为/usr/bin/rm,说明访问/bin目录下的命令将会软连接到/usr/bin/下。
/boot
Linux内核和系统引导程序,配置文件等所在的目录,在配置boot分区时是第一个配置的,并给了256M的大小,这个分区通常就是这么大。boot分区其实就是/dev/sda1的挂载点。
/dev
以文件形式存听任何设备与接口,如声卡,硬盘,光驱等。以下就是一块盘sda下的3个分区,sda1对应就是boot,sda2对应就是swap,sda3对应就是/。
若是不肯定能够经过如下命令的对比均可以分析出来。
[root@clyang ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 12309504 3943356 8366148 33% / devtmpfs 2002356 0 2002356 0% /dev tmpfs 2013172 0 2013172 0% /dev/shm tmpfs 2013172 11956 2001216 1% /run tmpfs 2013172 0 2013172 0% /sys/fs/cgroup /dev/sda1 258724 138844 119880 54% /boot tmpfs 402636 0 402636 0% /run/user/0 [root@clyang ~]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 [root@clyang ~]# blkid /dev/sda1: UUID="2c63419a-a2cb-4dcb-a579-6dc4023d8c1f" TYPE="xfs" /dev/sda2: UUID="ccc93b28-83b4-4b16-930a-f8f1e32a32ca" TYPE="swap" /dev/sda3: UUID="7530f7d3-3d71-4cad-a9ae-645b3d7c421f" TYPE="xfs" /dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" [root@clyang ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri May 31 00:53:04 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7530f7d3-3d71-4cad-a9ae-645b3d7c421f / xfs defaults 0 0 UUID=2c63419a-a2cb-4dcb-a579-6dc4023d8c1f /boot xfs defaults 0 0 UUID=ccc93b28-83b4-4b16-930a-f8f1e32a32ca swap swap defaults 0 0 [root@clyang ~]#
/etc
配置文件所在的目录,二进制软件包配置文件所在的目录。
/home
普通用户的家目录。
/root
管理员的家目录,如咱们是root用户,所以家目录就是/root。
/mnt
临时挂载点
/sbin
管理员命令所在目录,普通用户不能使用,以下面切换到我的目录下后,使用管理员命令reboot没法生效。
切换到clyang用户,使用reboot命令提示切换到其余用户。
切回去,使用root用户来执行reboot,生效。
/lib
开机使用的函数库,以及/bin和/sbin目录下命令要调用的函数。
除了lib,还有一个lib64,表明64位下的函数库,通常为系统为64位。
/opt
放置第三方软件,如今通常不用了。
/media
用于挂载设备文件的目录。通常是能够移除的媒体文件。
/srv
为用户提供服务的数据所在的目录,一些网络服务的数据文件目录。
/tmp
任何人均可以使用的共享目录,存放临时文件。
/usr
系统软件和用户相关程序所在目录,FHS里解释为第二层次目录。如我在里面安装了jdk,tomcat和mysql。
/var
常常存放可变化的数据,如日志文件。
/proc
虚拟文件系统,存放进程、内核信息、外部设备及网络状态的目录。
/sys
跟proc相似。
/run
正在运行的进程相关文件。
/etc系统初始化及设置相关重要文件
网卡配置
能够先查看。
其做用是配置上网的,能够看下里面的内容。
具体的意思以下:
(1)TYPE=Ethernet:上网类型,如今基本为以太网
(2)BOOTPROTO=none:启动协议,获取配置方式,通常有none、bootp和dhcp三个
(3)DEFROUTE=yes:使用默认路由
(4)NAME=eth0:第一块网卡逻辑设备名,如eth0,第二块为eth1
(5)UUID=355fd293-f18d-4a72-b9e3-9cb69f659d57:通用惟一标识码(Universally Unique Identifier),若是VMware克隆的虚拟机没法启动网卡,能够去掉此项。
(6)DEVICE=eth0:第一块网卡逻辑设备名
(7)ONBOOT=yes:开机自动激活网卡设备
(8)IPADDR=10.0.0.200:虚拟机NAT模式下IP地址,IP地址分为网络位和主机位
(9)PREFIX=24:子网掩码位数,子网掩码用于划分网络用,将ip地址的网络位和主机位进行划分,能够计算ip地址的数量,若是是24位即255.255.255.0,表明可使用255.255.255.0-255.255.255.255之间的ip,255主机位通常做为广播用,还有一个用作网关,通常紧靠广播位
(10)DNS1=223.5.5.5:主DNS,这个配置会优先于/etc/resolv.conf中的配置生效
(11)GATEWAY=10.0.0.254:局域网上网网关地址,网关用于数据的转发,任何数据传输都须要经过网关
DNS配置文件
DNS就是域名系统,主要做用是将浏览器输入的网址转化为要访问服务端的ip地址,也可使用/etc/hosts来解析,可是这个针对我的电脑的,DNS则是放到了一个公共的地方,你们均可以使用来解析。
目前来讲/etc/resolv.conf基本废弃,主要配置在/etc/sysconfig/network-scripts/ifcfg-eth0里设置DNS便可。若是在resolv.conf中设置了DNS地址,只针对当前设置有用,若是网卡重启就会被从新覆盖。若是/etc/sysconfig/network-scripts/ifcfg-eth0设置了,自动更新到resolv.conf里,反之则不会。
查看修改后内容,重启后发现又变回去了。
/etc/hosts文件
系统本地的DNS解析文件,若是本地DNS中有设置一个网址的解析地址,则优先按照hosts文件中的进行解析,不然按照公共DNS进行解析。
下面在不修改hosts文件的状况下ping百度。
修改hosts文件,添加对百度网址的解析,IP地址修改成1.1.1.1,从新ping发现ip地址已经修改成hosts文件中的IP地址。
通常这个文件是用作局域网测试解析。
/etc/fstab
开机自动挂载设备的文件,以下图所示,自动挂载了/、/boot、swap和/media。
入图所示,第一列UUID表明设备名,能够经过blkid命令来查看对应的设备。其余以下:
(1)第二列表明挂载点
(2)第三列表明文件系统类型
(3)第四列表明挂载参数,能够看到光盘的挂载参数为iso9660
(4)第五列表明是否自动备份,通常设置0
(5)第六列表明是否开机检查,通常设置0
/etc/rc.local
存放开机自启动程序命令的文件,其实真实路径是/etc/rc.d/rc.local,这里有一个连接。
从提示能够看出来,须要使用chmod +x /etc/rc.d/rc.local命令来确保这个文件在启动时执行。
/etc/profile和/etc/bashrc
配置系统的环境变量,别名等的文件,目前的认知是发现profile通常是设置环境变量,bashrc通常是别名。
下面是profile文件,里面配置了JDK,Tomcat和MySql的环境变量,另外还配置了PS1变量,让显示效果改变,其中把export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\\$ "添加到profile文件中就能够,可使用source命令生效,或者重启。
还有别名也能够放到profile文件里,好比rm命令,按照以下添加,设置后启动命令就提示"不要使用rm",可是发现一个问题,若是重启后就没用了,不提示。
alias rm='不要使用rm命令'
而后将别名命令添加到bashrc,重启后发现能够正常提示。
从上面能够看出来,/etc/bashrc里设置的别名命令优先于/etc/profile生效。
/etc/issue和/etc/issue.net
清理这里面的内容,可让linux启动后再也不显示版本和内核信息。
虚拟机启动显示内容
清理里面内容
[root@oldboyedu ~]# >/etc/issue [root@oldboyedu ~]# >/etc/issue.net
查看已经没有了内容。
重启或者Ctrl+D后查看是否还有版本信息和内核信息,发现已经没了。
/etc/motd
配置用户登陆系统以后显示的提示内容,能够经过vim命令在里面修改,如图就是我添加的。
登陆后提示我写的内容。
/etc/redhat-release
查看系统版本,另外cat /etc/system-release也能够查看。
还有一个查看系统内核,能够看下。
/etc/sysctl.conf
Linux系统内核参数设置与优化的文件,之后补充。
/etc/init.d
这个目录时用来存放yum或者rpm工具安装的软件的默认启动脚本,如我安装的mysql,另外在Centos7中这个文件基本废弃不用了,统一由systemctl取代。
/etc/inittab
设置开机运行级别以及启动相应脚本(Centos5用,后面没用了)的文件,主要是Centos7以前使用,查看里面内容能够发现,在这里设置将再也不生效。
根据提示去systemd查看,下面就是新的存放地。
另外补充一下运行级别的概念,linux下有7个运行级别,以下。
(1)0 关机
(2)1 单用户模式,root用户密码忘记可使用此模式找回
(3)2 没有NFS(一个文件系统),无网络多用户模式
(4)3 命令行模式,企业级服务器核心运行状态
(5)4 未使用,官方预留
(6)5 图形化模式
(7)6 重启
下面都是查看运行级别的命令,下面三个在Centos7均可以使用,最后一个适用Centos7。
Centos6和Centos7的运行级别有一一对应关系。
若是须要切换运行级别,使用init命令,以下图使用init 6命令后重启了linux。
在Centos7下主要使用 'systemctl set-default 运行级别' 修改运行级别。
若是是Centos6,修改/etc/inittab文件,将以下行进行设置。
id:3:initdefault
下面在centos6下测试将默认运行级别修改成6,而后进入单用户模式进行修改运行级别。
(1)修改运行级别为6
(2)重启虚拟机,进入循环重启,在出现以下画面时,按ctrl+G鼠标进入虚拟机,方向键或回车都可。
(3)根据提示,按e,进入系统前编辑命令。
(4)选中kernel,继续按e。
(5)quiet后空格,在加上1后回车
(6)再次在kernel上按字母b进行boot启动
(7)这样就进入了单用户模式,能够在此模式下修改运行级别,或者修改root密码(passwd命令修改)。
单用户
总结
以上主要内容,为目录结构用途,以及关键的文件做用,学习的过程当中暂时先得到大致的印象,后面慢慢学习的过程当中再加深理解。