Linux重要目錄結構

學習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命令修改)。

 單用戶

 

總結

以上主要內容,爲目錄結構用途,以及關鍵的文件做用,學習的過程當中暫時先得到大致的印象,後面慢慢學習的過程當中再加深理解。

相關文章
相關標籤/搜索