歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux樹形目錄結構

Linux樹形目錄結構

日期:2017/3/1 14:49:20   编辑:關於Linux
Linux樹形目錄結構 使用linux也有一年多時間了 最近也是一直在維護網站系統主機 下面是linux目錄結構說明 本人使用的是centos系統,很久沒有發表博文了 近期會整理自己所用所了解知識點,發表linux相關的文章,記錄自己的linux點點滴滴。 linux 目錄結構 /:根目錄,一般根目錄下只存放目錄,不要存放文件,/etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個分區中 /bin:/usr/bin:可執行二進制文件的目錄,如常用的命令ls、tar、mv、cat等。 /boot:放置linux系統啟動時用到的一些文件。/boot/vmlinuz為linux的內核文件,以及/boot/gurb。建議單獨分區,分區大小100M即可 /dev:存放linux系統下的設備文件,訪問該目錄下某個文件,相當於訪問某個設備,常用的是掛載光驅mount /dev/cdrom /mnt。 /etc:系統配置文件存放的目錄,不建議在此目錄下存放可執行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前記得備份。注:/etc/X11存放與x windows有關的設置。 /home:系統默認的用戶家目錄,新增用戶賬號時,用戶的家目錄都存放在此目錄下,~表示當前用戶的家目錄,~test表示用戶test的家目錄。建議單獨分區,並設置較大的磁盤空間,方便用戶存放數據 /lib:/usr/lib:/usr/local/lib:系統使用的函數庫的目錄,程序在執行過程中,需要調用一些額外的參數時需要函數庫的協助,比較重要的目錄為/lib/modules。 /lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下,通常這個目錄會自動出現在裝置目錄下。如加載硬盤於/disk 中,此目錄下就會自動產生目錄/disk/lost+found /mnt:/media:光盤默認掛載點,通常光盤掛載於/mnt/cdrom下,也不一定,可以選擇任意位置進行掛載。 /opt:給主機額外安裝軟件所擺放的目錄。如:FC4使用的Fedora 社群開發軟件,如果想要自行安裝新的KDE 桌面軟件,可以將該軟件安裝在該目錄下。以前的 Linux 系統中,習慣放置在 /usr/local 目錄下 /proc:此目錄的數據都在內存中,如系統核心,外部設備,網絡狀態,由於數據都存放於內存中,所以不占用磁盤空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等 /root:系統管理員root的家目錄,系統第一個啟動的分區為/,所以最好將/root和/放置在一個分區下。 /sbin:/usr/sbin:/usr/local/sbin:放置系統管理員使用的可執行命令,如fdisk、shutdown、mount等。與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般用戶只能"查看"而不能設置和使用。 /tmp:一般用戶或正在執行的程序臨時存放文件的目錄,任何人都可以訪問,重要數據不可放置在此目錄下 /srv:服務啟動之後需要訪問的數據目錄,如www服務需要訪問的網頁數據存放在/srv/www內 /usr:應用程序存放目錄,/usr/bin存放應用程序,/usr/share存放共享數據,/usr/lib存放不能直接運行的,卻是許多程序運行所必需的一些函數庫文件。/usr/local:存放軟件升級包。/usr/share/doc:系統說明文件存放目錄。/usr/share/man: 程序說明文件存放目錄,使用 man ls時會查詢/usr/share/man/man1/ls.1.gz的內容建議單獨分區,設置較大的磁盤空間 /var:放置系統執行過程中經常變化的文件,如隨時更改的日志文件/var/log,/var/log/message:所有的登錄文件存放目錄,/var/spool/mail:郵件存放的目錄,/var/run:程序或服務啟動 後,其PID存放在該目錄下。建議單獨分區,設置較大的磁盤空間 ------------------------------------------ /dev:目錄   dev是設備(device)的英文縮寫。/dev這個目錄對所有的用戶都十分重要。因為在這個目錄中包含了所有Linux系統中使用的外部設備。但是這裡並不是放的外部設備的驅動程序,這一點和 windows,dos操作系統不一樣。它實際上是一個訪問這些外部設備的端口。我們可以非常方便地去訪問這些外部設備,和訪問一個文件,一個目錄沒有任何區別。   Linux沿襲Unix的風格,將所有設備認成是一個文件。   設備文件分為兩種:塊設備文件(b)和字符設備文件(c)   設備文件一般存放在/dev目錄下,對常見設備文件作如下說明:   /dev/hd[a-t]:IDE設備   /dev/sd[a-z]:SCSI設備   /dev/fd[0-7]:標准軟驅   /dev/md[0-31]:軟raid設備   /dev/loop[0-7]:本地回環設備   /dev/ram[0-15]:內存   /dev/null:無限數據接收設備,相當於黑洞   /dev/zero:無限零資源   /dev/tty[0-63]:虛擬終端   /dev/ttyS[0-3]:串口   /dev/lp[0-3]:並口   /dev/console:控制台   /dev/fb[0-31]:framebuffer   /dev/cdrom => /dev/hdc   /dev/modem => /dev/ttyS[0-9]   /dev/pilot => /dev/ttyS[0-9]   /dev/random:隨機數設備   /dev/urandom:隨機數設備   (PS:隨機數設備,後面我會再寫篇博客總結一下)   /dev目錄下的節點是怎麼創建的?   devf或者udev會自動幫你創建得。   kobject是sysfs文件系統的基礎,udev通過監測、檢測sysfs來獲取新創建的設備的。 ------------------------------------------ /etc:目錄   包含很多文件.許多網絡配置文件也在/etc 中. /etc/rc or /etc/rc.d or /etc/rc*.d   啟動、或改變運行級時運行的scripts或scripts的目錄. /etc/passwd   用戶數據庫,其中的域給出了用戶名、真實姓名、家目錄、加密的口令和用戶的其他信息. /etc/fstab   啟動時mount -a命令(在/etc/rc 或等效的啟動文件中)自動mount的文件系統列表. Linux下,也包括用swapon -a啟用的swap區的信息. /etc/group   類似/etc/passwd ,但說明的不是用戶而是組. /etc/inittab   init 的配置文件. /etc/issue   getty 在登錄提示符前的輸出信息.通常包括系統的一段短說明或歡迎信息.內容由系統管理員確定. /etc/motd   Message Of The Day,成功登錄後自動輸出.內容由系統管理員確定.經常用於通告信息,如計劃關機時間的警告. /etc/mtab   當前安裝的文件系統列表.由scripts初始化,並由mount 命令自動更新.需要一個當前安裝的文件系統的列表時使用,例如df 命令. /etc/shadow   在安裝了影子口令軟件的系統上的影子口令文件.影子口令文件將/etc/passwd 文件中的加密口令移動到/etc/shadow 中,而後者只對root可讀.這使破譯口令更困難. /etc/login.defs   login 命令的配置文件. /etc/printcap   類似/etc/termcap ,但針對打印機.語法不同. /etc/profile , /etc/csh.login , /etc/csh.cshrc   登錄或啟動時Bourne或C shells執行的文件.這允許系統管理員為所有用戶建立全局缺省環境. /etc/securetty   確認安全終端,即哪個終端允許root登錄.一般只列出虛擬控制台,這樣就不可能(至少很困難)通過modem或網絡闖入系統並得到超級用戶特權. /etc/shells   列出可信任的shell.chsh 命令允許用戶在本文件指定范圍內改變登錄shell.提供一台機器FTP服務的服務進程ftpd 檢查用戶shell是否列在 /etc/shells 文件中,如果不是將不允許該用戶登錄. /etc/sysconfig   網絡配置相關目錄 /etc/DIR_COLORS 設定顏色 /etc/HOSTNAME 設定用戶的節點名 /etc/NETWORKING 只有YES標明網絡存在 /etc/host.conf 文件說明用戶的系統如何查詢節點名 /etc/hosts 設定用戶自已的IP與名字的對應表 /etc/hosts.allow 設置允許使用inetd的機器使用 /etc/hosts.deny 設置不允許使用inetd的機器使用 /etc/hosts.equiv 設置遠端機不用密碼 /etc/inetd.conf 設定系統網絡守護進程inetd的配置 /etc/gateways 設定路由器 /etc/protocols 設定系統支持的協議 /etc/named.boot 設定本機為名字服務器的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 設置IP /etc/resolv.conf 設置DNS /etc/X11 X Window的配置文件,xorg.conf 或 XF86Config ??? X Server 的?定? /etc/fstab 記錄開機要mount的文件系統 /etc/inittab 設定系統啟動時init進程將把系統設置成什麼樣的runlevel /etc/issue 記錄用戶登錄前顯示的信息 /etc/group 設定用戶的組名與相關信息 /etc/passwd 帳號信息 /etc/shadow 密碼信息 /etc/sudoers 可以sudo命令的配置文件 /etc/securetty 設定哪些終端可以讓root登錄 /etc/login.defs 所有用戶登錄時的缺省配置 /etc/exports 設定NFS系統用的 /etc/init.d/ 所有服?的???? script 都是放在??的,例如要??或者?? /etc/xinetd.d/ ?就是所?的 super daemon 管理的各?服?的?定?目? /etc/modprobe.conf 內核模塊額外參數設定 /etc/syslog.conf 日志設置文件 ------------------------------------------ /proc: 目錄 檔名 文件內容 /proc/cmdline 加載 kernel 時所下達的相關參數!查閱此文件,可了解系統是如何啟動的! /proc/cpuinfo 本機的 CPU 的相關資訊,包含時脈、類型與運算功能等 /proc/devices 這個文件記錄了系統各個主要裝置的主要裝置代號,與 mknod 有關呢! /proc/filesystems 目前系統已經加載的文件系統羅! /proc/interrupts 目前系統上面的 IRQ 分配狀態。 /proc/ioports 目前系統上面各個裝置所配置的 I/O 位址。 /proc/kcore 這個就是內存的大小啦!好大對吧!但是不要讀他啦! /proc/loadavg 還記得 top 以及 uptime 吧?沒錯!上頭的三個平均數值就是記錄在此! /proc/meminfo 使用 free 列出的內存資訊,嘿嘿!在這裡也能夠查閱到! /proc/modules 目前我們的 Linux 已經加載的模塊列表,也可以想成是驅動程序啦! /proc/mounts 系統已經掛載的數據,就是用 mount 這個命令呼叫出來的數據啦! /proc/swaps 到底系統掛加載的內存在哪裡?呵呵!使用掉的 partition 就記錄在此啦! /proc/partitions 使用 fdisk -l 會出現目前所有的 partition 吧?在這個文件當中也有紀錄喔! /proc/pci 在 PCI 匯流排上面,每個裝置的詳細情況!可用 lspci 來查閱! /proc/uptime 就是用 uptime 的時候,會出現的資訊啦! /proc/version 核心的版本,就是用 uname -a 顯示的內容啦! /proc/bus/* 一些匯流排的裝置,還有 U盤 的裝置也記錄在此喔! ------------------------------------------ /usr: 目錄   /usr 文件系統經常很大,因為所有程序安裝在這裡. /usr 裡的所有文件一般來自Linux distribution;本地安裝的程序和其他東西在/usr/local 下.這樣可能在升級新版系統或新distribution時無須重新安裝全部程序. /usr/etc 存放設置文件 /usr/games 存放游戲和教學文件 /usr/include 存放C開發工具的頭文件 /usr/share 存放結構獨立的數據 /usr/bin   幾乎所有用戶命令.有些命令在/bin 或/usr/local/bin 中. /usr/sbin   根文件系統不必要的系統管理命令,例如多數服務程序. /usr/share/man , /usr/share/info , /usr/share/doc   手冊頁、GNU信息文檔和各種其他文檔文件. /usr/include   C編程語言的頭文件.為了一致性這實際上應該在/usr/lib 下,但傳統上支持這個名字. /usr/lib   程序或子系統的不變的數據文件,包括一些site-wide配置文件.名字lib來源於庫(library); 編程的原始庫存在/usr/lib 裡. /usr/local   本地安裝的軟件和其他文件放在這裡. /usr/src 存放程序的源代碼 ------------------------------------------ /var: 目錄   /var 包括系統一般運行時要改變的數據.每個系統是特定的,即不通過網絡與其他計算機共享. /var/catman   當要求格式化時的man頁的cache.man頁的源文件一般存在/usr/man/man* 中;有些man頁可能有預格式化的版本,存在/usr/man/cat* 中.而其他的man頁在第一次看時需要格式化,格式化完的版本存在/var/man 中,這樣其他人再看相同的頁時就無須等待格式化了. (/var/catman 經常被清除,就象清除臨時目錄一樣.) /var/lib   系統正常運行時要改變的文件. /var/local   /usr/local 中安裝的程序的可變數據(即系統管理員安裝的程序).注意,如果必要,即使本地安裝的程序也會使用其他/var 目錄,例如/var/lock . /var/lock   鎖定文件.許多程序遵循在/var/lock 中產生一個鎖定文件的約定,以支持他們正在使用某個特定的設備或文件.其他程序注意到這個鎖定文件,將不試圖使用這個設備或文件. /var/log   各種程序的Log文件,特別是login (/var/log/wtmp log所有到系統的登錄和注銷) 和syslog (/var/log/messages 裡存儲所有核心和系統程序信息. /var/log 裡的文件經常不確定地增長,應該定期清除. /var/run   保存到下次引導前有效的關於系統的信息文件.例如, /var/run/utmp 包含當前登錄的用戶的信息. /var/spool   mail, news, 打印隊列和其他隊列工作的目錄.每個不同的spool在/var/spool 下有自己的子目錄,例如,用戶的郵箱在/var/spool/mail 中. /var/tmp   比/tmp 允許的大或需要存在較長時間的臨時文件. (雖然系統管理員可能不允許/var/tmp 有很舊的文件.) ------------------------------------------ 比較重要的目錄 在 Linux 系統中,有幾個目錄是特別需要注意的,以下提供幾個需要注意的目錄,以及預設相關的用途:  /etc:這個目錄相當重要,如前所述,你的開機與系統數據文件均在這個目錄之下,因此當這個目錄被破壞,那你的系統大概也就差不多該死掉了!而在往後的文件中,你會發現我們常常使用這個目錄下的 /etc/rc.d/init.d 這個子目錄,因為這個 init.d 子目錄是開啟一些 Linux 系統服務的 scripts (可以想成是批次檔 )的地方。而在 /etc/rc.d/rc.local 這個文件是開機的執行檔。  /bin, /sbin, /usr/bin, /usr/sbin:這是系統預設的執行文件的放置目錄,例如 root 常常使用的 userconf, netconf, perl, gcc, c++ 等等的數據都放在這幾個目錄中,所以如果你在提示字符下找不到某個執行檔時,可以在這四個目錄中查一查!其中, /bin, /usr/bin 是給系統使用者使用的指令,而 /sbin, /usr/sbin 則是給系統管理員使用的指令!   /usr/local:這是系統預設的讓你安裝你後來升級的套件的目錄。例如,當你發現有更新的 Web 套件(如 Apache )可以安裝,而你又不想以 rpm 的方式升級你的套件,則你可以將 apache 這個套件安裝在 /usr/local 底下。安裝在這裡有個好處,因為目前大家的系統都是差不多的,所以如果你的系統要讓別人接管的話,也比較容易上手呀!也比較容易找的到數據喔!因此,如果你有需要的話,通常我都會將 /usr/local/bin 這個路徑加到我的 path 中。  /home:這個是系統將有賬號的人口的家目錄設置的地方。   /var:這個路徑就重要了!不論是登入、各類服務的問題發生時的記錄、以及常態性的服務記錄等等的記錄目錄,所以當你的系統有問題時,就需要來這個目錄記錄的文件數據中察看問題的所在啰!而 mail 的預設放置也是在這裡,所以他是很重要的   /usr/share/man, /usr/local/man:這兩個目錄為放置各類套件說明檔的地方,例如你如果執行 man man,則系統會自動去找這兩個目錄下的所有說明文件 文件種類: 談完了文件格式之後,再來談談所謂的文件種類吧!我們在剛剛的屬性介紹中提到了最前面的標志 ( d 或 - ) 可以代表目錄或文件,那就是不同的文件種類啦!Linux 的文件種類主要有底下 這幾種: 正規文件( regular file ):就是一般類型的文件,在由 ls –al 所顯示出來的屬性方面,第一個屬性為 [ - ]。另外,依照文件的內容,又大略可以分為兩種文件種類: 純文字文件(ascii) :這是 Unix 系統中最多的一種啰,幾乎只要我們可以用來做為設定的文件都屬於這一種; 二進制文件(binary) :通常執行檔除了 scripts (文字型批次文件)之外,就是這一種文件格式; 目錄 (directory):就是目錄!第一個屬性為 [ d ]; 連結檔 (link):就是類似 Windows 底下的快捷方式啦!第一個屬性為 [ l ]; 設備檔 (device):與系統周邊相關的一些文件,通常都集中在 /dev 這個目錄之下!通常又分為兩種: 區塊 (block) 設備檔 :就是一些儲存數據,以提供系統存取的接口設備,簡單的說就是硬盤啦!例如你的一號硬盤的代碼是 /dev/hda1 等等的文件啦!第一個屬性為 [ b ]; 字符 (character) 設備檔 :亦即是一些串行端口的接口設備,例如鍵盤、鼠標等等!第一個屬性為 [ c ]。 Linux 的文件系統( inode ):   在 Linux 系統當中,每個文件不止有文件的內容數據,還包括文件的種種屬性,例如:所屬群組、所屬使用者、能否執行、文 件建立時間、文件特殊屬性等等。我們將每個文件的內容分為兩個部分來儲存,一個是文件的屬性,另一個則是文件的內容。   為了應付這兩個不同的咚咚,所以 ext2 規劃出 inode 與 Block 來分別儲存文件的屬性( 放在 inode 當中 )與文件的內容( 放置在 Block area 當中 )。當我們要將一個 partition 格式化 ( format )為 ext2 時,就必須要指定 inode 與 Block 的大小才行,也就是說,當 partition 被格式化為 ext2 的文件系統時,他一定會有 inode table 與 block area 這兩個區域。   Block 已經在前面說過了,他是數據儲存的最小單位。那麼 inode 是什麼?!簡單的說, Block 是記錄『文件內容數據』的區域,至於 inode 則是記錄『該文件的相關屬性,以及文件內容 放置在哪一個 Block 之內』的信息。簡單的說, inode 除了記錄文件的屬性外,同時還必須要具有指向( pointer )的功能,亦即指向文件內容放置的區塊之中,好讓操作系統可以正確的去 取得文件的內容啊 該文件的擁有者與群組(owner/group); 該文件的存取模式; 該文件的類型; 該文件的建立日期(ctime)、最近一次的讀取時間(atime)、最近修改的時間 (mtime); 該文件的容量; 定義文件特性的旗標(flag),如 SetUID...; 該文件真正內容的指向 (pointer); --------------------------------------------- Linux樹形目錄結構 / (這就是著名的根) ├── bin (你在終端運行的大多數程序,比如cp、mv...) ├── boot (內核放在這裡,這個目錄也經常被作為某個獨立分區的掛載點) │ └── grub (grub引導程序和引導菜單就放在這裡) ├── cdrom ├── dev (存放設備文件,這裡相當於一個設備管理器,由系統自動生成。視硬件環境不同變化很大) │ ├── block │ ├── bsg │ ├── bus │ ├── char │ ├── disk (磁盤信息,要掛載硬盤分區就要注意這裡的信息喽) │ │ ├── by-id (硬盤分區的永久性符號鏈接) │ │ ├── by-label (按卷標識別的硬盤分區,常用於掛載) │ │ ├── by-path (硬盤分區的節點鏈接) │ │ └── by-uuid (按UUID識別的硬盤分區,常用於掛載) │ ├── dri │ ├── fd │ ├── input │ ├── net │ ├── pts │ ├── shm │ └── snd ├── etc (存放所有程序和系統的配制文件和全局變量,對所有用戶生效,非常值得備份) ├── home (這就是著名的home目錄了,注意不是”家目錄”,強烈建議把一個獨立分區掛載到這裡!) │ ├── adagio (這才是我真正的家!一般來說目錄名就是帳號名,當然也可以不是,隨便。命令行中用波浪線~代表這裡) │ ├── MNT (這是我掛載其它硬盤分區的地方,你可以看到用硬盤品牌、容量或用途區分的目錄名) │ │ ├── MAX40NT1 (邁拓40G) │ │ ├── ST160NT1 (希捷160G第一分區,下面兩個類似) │ │ ├── ST160NT2 │ │ ├── ST160SYS │ │ ├── ST320G (希捷320G) │ │ │ ├── MOVIE │ │ │ ├── MUSIC │ │ │ └── P2P (電驢、BT的緩沖區) │ │ ├── ST80G (希捷80G) │ │ │ ├── PROGRAM │ │ │ ├── ST80PE │ │ │ └── YEAR │ │ └── WD1000 (西數1T) │ │ ├── WD2 │ │ ├── WD3 │ │ ├── WD5 │ │ ├── WD6.Lib │ │ └── WD7 │ └── test (我建立的另一個帳號的家目錄,專門用於測試,一旦搞到無法收拾的地步,只需簡單的 │ 把裡面的所有文件刪除,就可以恢復默認。實際上你可以擁有無數個帳號) ├── lib (所有程序共享的庫文件) ├── lost+found (磁盤掃描出現的丟失的數據) ├── media (你在文件管理器裡點擊後自動掛載的分區就在這裡,按卷標命名,沒有卷標則按大小命名) ├── mnt (同樣用於掛載磁盤,這是最傳統的位置,喜歡掛哪裡隨便) ├── opt (某些特殊的程序喜歡把數據放在這裡,比如JAVA) ├── proc (當前系統所有的詳細信息,這裡的”文件”並不存在於硬盤中,而是在內存或緩存裡,每次啟動後都不一樣) ├── root (這是系統最高權威root用戶的家!他是老大,所以不住在/home裡,那裡是草民住的) ├── sbin (類似/bin,存放常用程序,但這裡的程序都是要命的啊,比如格式化,所以只有root或sudo用戶有權使用) ├── srv (一些服務所要訪問的文件) ├── sys (系統的核心文件,類似/proc,不必管它) ├── tmp (存放臨時文件,所有用戶均可使用,不過你要小心啊,這裡的所有文件一旦重啟就全沒了,自動清空的) ├── usr (你在X下使用的所有程序數據都在這裡了,包括圖標、manual等。所有用戶都可以使用。也是最龐大的目錄) └── var (variation,顧名思義就是變量,這裡存放系統中經常變化的數據。和/tmp不同啊,很有用的地方) ├── backups ├── cache │ └── apt │ └── archives (存放你安裝的所有程序的deb包!重裝系統時太有用了,一定要備份好,到時候放回來。 │ 我建議把整兒/var單獨掛載到一個獨立分區,像/home一樣。這樣你重裝好系統後,只 │ 需要簡單的把整兒分區掛載到/var就行了,省去了備份-還原的時間。要知道這些deb包 │ 可不是幾十M而已,而是有可能幾百M、幾個G,一來一回可夠嗆的。你也可以單獨掛載 │ 一個分區到/var/cache/apt/archives,其他的都不要。 │ 當然,這樣又增加了一點系統構造的復雜度,喜歡怎樣請自己斟酌。) ├── crash ├── games ├── lib ├── local ├── lock ├── log (呵呵,這裡的文件是系統運行的完整記錄,出了問題一定要來這裡看看) ├── mail (這裡是存放所有用戶email的地方) ├── opt ├── run ├── spool └── tmp
Copyright © Linux教程網 All Rights Reserved