天天看點

樹狀結構及檔案目錄詳解

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:CD光牒預設挂載點,通常CD光牒挂載于/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  

/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 有很舊的檔案.) 

比較重要的目錄

      /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

 本文轉自 sjfbjs 51CTO部落格,原文連結:http://blog.51cto.com/11886896/1829957