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
開發、測試時做臨時的域名解析常用,英文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 可修改機器名及網卡啟動,網關等配置
永久修改主機名:
- 修改/etc/sysconfig/network將HOSTNAME的值改掉
- 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
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 用於存放開機自啟動程序命令的文件
開機時會把/etc/rc.local里的內容執行一遍。
自己開發的程序,習慣把啟動命令放入/etc/rc.local,實現開機啟動這些程序, Linux開機時,在登錄前,會把/etc/rc.local里的內容執行一遍。
企業里如何用:
chkconfig 和 /etc/rc.local 都會用,看個人習慣。
最好用/etc/rc.local,把它當做服務器的檔案。
7./etc/inittab 設定系統啟動時init進程將把系統設置成什么樣的runlevel運行級別 及加載相關的級別對應啟動文件設置。
# 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
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 源代碼,例如:內核源代碼及其頭文件。
14./usr/local 存放用戶自編譯安裝軟件的存放目錄
相當於C:\Program files
15./var/log/messages
源代碼,例如:內核源代碼及其頭文件。
各種程序的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 這個命令呼叫出來的數據啦