學習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命令修改)。
單用戶
總結
以上主要內容,爲目錄結構用途,以及關鍵的文件做用,學習的過程當中暫時先得到大致的印象,後面慢慢學習的過程當中再加深理解。