Linux系統目錄結構:目錄層次標准、常用目錄和文件


1. 目錄層次標准FHS

FHS(Filesystem Hierarchy Standard)目錄層次標准,是Linux的目錄規范標准。

 

FHS定義了兩層規范

  • 第一層:是"/"根目錄下的各個目錄應該放什么文件數據
    • 如:/etc 目錄放置 系統的配置文件
    • /etc/exports
    • /etc/hosts/
    • /bin和/sbin 放置程序和系統命令
  • 第二層:針對/usr和/var這兩個目錄的子目錄來定義
    • /var/log 放置系統日志文件
    • /var 分區單獨分出來,硬盤足夠大。剩余20%硬盤容量報警

 

2. 常用的目錄的作用

/bin

Essential user command binaries for use by all users

常用的二進制命令所在的目錄。

/bin目錄和/usr/bin目錄類似。

cat, ls, cp, mv...存放着最經常使用的命令。

 

/boot

Static files of the boot loader

Linux的內核及系統引導程序所需的文件目錄。
存放着啟動Linux時的一些核心文件,包括一些連接文件以及鏡像文件。

安裝系統分區的時候一般要分一個boot分區。
常見分區:/boot 128M swap分區,內存的1.5倍 /全給。

 

/dev

Device files

設備文件的目錄,比如聲卡、磁盤、光驅...

該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。

 

/etc

Host-specific system configuration

二進制軟件包 yum, rpm 的配置文件默認路徑

這個目錄用來存放所有的系統管理所需要的配置文件和子目錄。

  • fstab 開機自動掛載磁盤設備文件
  • hosts 主機名文件
  • inittab 開機運行級別
  • issue 預登錄信息,顯示的設備信息等
  • motd 登錄后的信息,歡迎,說明等設置,默認是空
  • profile 
  • resolv.conf dns的配置文件

服務啟動命令存放的目錄/etc/init.d/ 

  • /etc/init.d/sshd
  • /etc/init.d/iptables
 

/home

普通用戶的家目錄。

用戶的主目錄,在Linux中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。

 

/lib

這個目錄里存放着系統能夠最基本的動態連接共享庫,其作用類似於windows里面的DLL文件。
幾乎所有的應用程序都需要用到這些共享庫。

 

/lost+found

這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些文件。

 

/media

Linux系統會自動識別一些設備,例如:U盤,光驅等等,當識別后,Linux會把識別的設備掛載到這個目錄下

 

/mnt

系統提供該目錄是為了讓用戶臨時掛載別的文件系統時,我們可以將光驅掛載在/mnt/上,然后進入該目錄里就可以查看光驅里的內容了。

 

/opt

這是給主機額外安裝軟件所擺放的目錄。 

比如安裝一個Oracle數據庫就可以放到這個目錄下,默認是空的

 

/proc

虛擬的目錄,是系統內存的映射。 

我們可以通過直接訪問這個目錄來獲取系統信息。 

這個目錄的內容不在硬盤上,而是在內存里,我們也可以直接修改里面的某些文件,比如可以通過下面的命令來屏蔽主機的ping命令,使別人無法ping到你的機器。

 

/root

系統管理員的用戶主目錄

 

/sbin

Super User,存放的是系統管理員使用的系統管理程序.

 

/selinux

是RedHat或CentOS特有的目錄,是安全機制,類似防火牆。

 

/srv

存放一些服務啟動之后需要提取的數據

 

/sys

這是Linux2.6內核的一個很大的變化。
該目錄下安裝了2.6內核中心出現的一個文件系統sysfs。 

sysfs文件系統集成了下面3種文件系統的信息:

  • 針對進程信息的proc文件系統
  • 針對設備的devfs文件系統
  • 針對偽終端的devpts文件系統

該文件系統是內核設備樹的一個直觀反映。 

當一個內核對象被創建的時候,對應的文件和目錄也在內核對象子系統中被創建。

 
 

/tmp

存放臨時文件

 

/usr

用戶的很多應用程序和文件都放在這個目錄下,類似windows的program files目錄

 

/usr/sbin

超級用戶使用的比較高級的管理程序和系統守護程序

 

/usr/src

內核源代碼默認的放置目錄

 

/var

這個目錄存放着不斷擴充的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日志文件。

 

小結:

 
  • /dev 設備目錄
  • /etc 系統配置及服務配置文件,啟動命令的目錄
  • /proc 顯示內核及進程信息的虛擬文件系統
  • /tmp 臨時文件目錄,公共廁所
  • /home 普通用戶的家目錄
  • /root 超級管理員的家目錄
  • /var 變化的目錄,一般是日志文件,cache的目錄
  • /usr 用戶程序和數據,幫助文件,二進制命令等的目錄
  • /bin 普通用戶命令的目錄
  • /sbin和/usr/sbin 超級用戶命令的目錄

 

3. 重要子目錄

必須要掌握的Linux目錄路徑知識

1. /etc/sysconfig/network-scripts/ifcfg-eth0

配置網絡地址及GW等,使得網卡生效:

  • 重啟網卡/etc/init.d/network restart (影響所有網卡)等價命令:service network restart
  • ifdown eth0 && ifup eth0 只針對eth0

通過setup進行network configuration修改網卡配置就是在修改這個文件。

 

補充:網卡eth0文件內的配置信息

  • DEVICE=eth0 # 物理設備名
  • HWADDR=08:00:27:10:a5:56 # 網卡的MAC地址,48位
  • TYPE=Ethernet # 以太網
  • UUID=e1aa5279-e4c6-45af-8cbc-a63e5fa2b35d #網卡的唯一標識,相當於身份證
  • ONBOOT=yes # 控制網卡是不是開機啟動
  • NM_CONTROLLED=yes 
  • BOOTPROTO=none # proto取【none, static, bootp, dhcp】。
    • none:引導時不使用協議;
    • static 靜態分配地址;
    • bootp 使用BOOTP協議;
    • dhcp,使用DHCP協議,局域網內自動分配IP
  • IPADDR=10.0.0.7 # addr是IP地址
  • NETMASK=255.255.255.0 # 子網掩碼,划分網絡位和主機位
  • DNS2=202.106.0.20 # DNS把baidu.com變成了百度的服務器IP,DNS就是域名和ip的解析工具
  • GATEWAY=10.0.0.254 # 網關地址,路由器的地址
  • DNS1=8.8.8.8 
  • USERCTL=no

 

2./etc/resolv.conf 設置Linux本地的客戶端DNS的配置文件

DNS可以實現域名和IP的互相解析。

setup -> "network configuration" -> "DNS configuration"

 

這個設置實質就是修改/etc/resolv.conf文件。 

 

負責域名和IP互相解析的服務就是DNS(domain name system):
www.baidu.com <==> 183.232.231.172

 

小結:

  • 客戶端DNS可以在網卡配置文件里設置ifcfg-eth0
  • 客戶端DNS也可以在/etc/resolv.conf里設置
  • 網卡里的設置DNS優先於/etc/resolv.conf,網卡重啟,網卡里的DNS設置會覆蓋/etc/resolv.conf

 

3. /etc/hosts 設定用戶IP與名字(或域名)的對應解析表,相當於本地LAN局域網內的DNS

類似C:\Windows\system32\drivers\etc\hosts,LAN內IP域名解析文件。
 

開發、測試時做臨時的域名解析常用,英文hosts - The static table lookup for host names. 

 

host 的解析在機房的服務器互相調用中也會常用,如門戶網站的解析真實案例:
taobao 

[root@oldboy ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 
 

作用 

  • 開發、產品、測試等人員,用於通過正式的域名測試產品
  • 服務器之間的調用可以用域名(內部的DNS),方便遷移
 

優先級:
dns緩存>hosts>dns服務

 

4. /etc/sysconfig/network 可修改機器名及網卡啟動,網關等配置

永久修改主機名:

  1. 修改/etc/sysconfig/network將HOSTNAME的值改掉
  2. hostname 新主機名 臨時生效的更改

兩項均修改,logout退出后再登入就會發現成功了。 

cat /etc/sysconfig/network
sed 's#oldboy#zoe#g' /etc/sysconfig/network
sed -i 's#oldboy#zoe#g' /etc/sysconfig/network
hostname zoe
logout
 

查看主機名: 

  • hostname
  • uname -n
 
hostname newname 臨時生效,logout,用戶登出再登錄就是newname了,但是由於配置文件沒有更改,系統重啟后就無效了。 
 

5./etc/fstab 記錄開機要掛載的文件系統的一個文件

fstab一旦配置錯誤,會導致服務器無法啟動。 

 

如何修復?

[root@zoe ~]# blkid
/dev/sda1: UUID="e506ded8-c98f-44a0-aed9-8aee1596fc15" TYPE="ext4" 
/dev/sda2: UUID="64b1e144-7c58-45c2-99eb-5410d7b9ae5d" TYPE="swap" 
/dev/sda3: UUID="19261341-e730-45e9-b71b-42bf62cca6dc" TYPE="ext4" 

第一列掛載的設備,可以是設備名或UUID,或磁盤標簽。

 

6./etc/rc.local 用於存放開機自啟動程序命令的文件

chkconfig 常用來管理  yum/rpm 安裝的程序的服務的開機自啟動 

 

開機時會把/etc/rc.local里的內容執行一遍。 

 

自己開發的程序,習慣把啟動命令放入/etc/rc.local,實現開機啟動這些程序, Linux開機時,在登錄前,會把/etc/rc.local里的內容執行一遍。

 

企業里如何用:
chkconfig 和 /etc/rc.local 都會用,看個人習慣。
最好用/etc/rc.local,把它當做服務器的檔案。

 
 

7./etc/inittab 設定系統啟動時init進程將把系統設置成什么樣的runlevel運行級別 及加載相關的級別對應啟動文件設置。

Linux開機啟動流程
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:

 

8./etc/init.d 存放系統啟動腳本

這個目錄來存放系統啟動腳本
 

9./etc/profile 全局系統環境配置變量

  • /etc/bashrc 全局 (所有用戶)
  • /etc/profile 全局 (所有用戶)
  • ~/.bashrc 和 ~/.bash_profile 局部系統環境配置變量(當前用戶)

 

10./etc/issue 記錄用戶登錄前顯示的系統版本等信息

 安全優化,清空/etc/issue內的系統版本信息:
 
>/etc/issue

 

11./etc/motd 登錄提醒

[root@zoe ~]# echo "Welcome to CenOS.">/etc/motd
[root@zoe ~]# cat /etc/motd
Welcome to CenOS.

登出logout再登入后,即可查看。

 

12./etc/redhat-release 聲明RedHat版本號和名稱的信息

[root@zoe ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)

 

13./usr/src 源代碼,例如:內核源代碼及其頭文件。

本地數據的第三層次,具體到本台主機。通常而言有進一步的子目錄,例如:bin/、lib/、share/.這是提供給一般用戶的/usr目錄,在這里安裝一般的應用軟件;
 

14./usr/local 存放用戶自編譯安裝軟件的存放目錄

一般是通過 源碼包安裝的軟件,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中的。

相當於C:\Program files 

 

15./var/log/messages

dmesg命令可以看系統的故障信息
 

源代碼,例如:內核源代碼及其頭文件。

各種程序的Log文件,特別是login (/var/log/wtmp log所有到系統的登錄和注銷) 和syslog (/var/log/messages 里存儲所有核心和系統程序信息. /var/log 里的文件經常不確定地增長,應該定期清除. 

 

16./var/log/secure 安全日志

17./proc/cpuinfo 處理器的信息,如:類型、廠家、型號和性能等 

18./proc/meminfo 查看內存信息

19./proc/loadavg 負載

還記得 top 以及 uptime 吧?沒錯!上頭的三個平均數值就是記錄在此!

 

20./proc/mounts

系統已經掛載的數據,就是用 mount 這個命令呼叫出來的數據啦

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM