天天看點

Linu基礎:Linux目錄詳解

/:根目錄,位于linux檔案系統目錄結構的頂層,一般根目錄下隻存放目錄,不要存放檔案,/etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個分區中。

/bin,/usr/bin:該目錄為指令檔案目錄,也稱為二進制目錄。包含了供系統管理者及普通使用者使用的重要的linux指令和二進制(可執行)檔案,包含shell解釋器等。

/boot: 該目錄中存放系統的核心檔案和引導裝載程式檔案,/boot/vmlinuz為linux的核心檔案,以及/boot/gurb。建議單獨分區,分區大小100m即可。

/dev: 裝置(device)檔案目錄,存放linux系統下的裝置檔案,通路該目錄下某個檔案,相當于通路某個裝置,存放連接配接到計算機上的裝置(終端、磁盤驅動器、光驅及網卡等)的對應檔案,包括字元裝置和塊裝置等,常用的是挂載光驅mount /dev/cdrom/mnt。

/etc: 系統配置檔案存放的目錄,該目錄存放系統的大部配置設定置檔案和子目錄,不建議在此目錄下存放可執行檔案,重要的配置檔案有/etc/inittab、/etc/fstab、/etc/init.d、/etc/x11(x window系統有關)、/etc/sysconfig(與網絡有關)、/etc/xinetd.d修改配置檔案之前記得備份。該目錄下的檔案由系統管理者來使用,普通使用者對大部分檔案有隻讀權限。

/home: 系統預設的使用者宿主目錄,新增使用者賬号時,使用者的宿主目錄都存放在此目錄下,~表示目前使用者的宿主目錄,~test表示使用者test的宿主目錄。建議單獨分區,并設定較大的磁盤空間,友善使用者存放資料。

/lib,/usr/lib,/usr/local/lib:系統使用的函數庫的目錄,程式在執行過程中,需要調用一些額外的參數時需要函數庫的協助,該目錄下存放了各種程式設計語言庫。典型的linux系統包含了c、c++和fortran語言的庫檔案。/lib目錄下的庫映像檔案可以用來啟動系統并執行一些指令,目錄/lib/modules包含了可加載的核心子產品,/lib目錄存放了所有重要的庫檔案,其他的庫檔案則大部分存放在/usr/lib目錄下。

/lost+fount: 在ext2或ext3檔案系統中,當系統意外崩潰或機器意外關機,産生的一些檔案碎片放在這裡。在系統啟動的過程中fsck工具會檢查這裡,并修複已經損壞的檔案系統。有時系統發生問題,有很多的檔案被移到這個目錄中,可能會用手工的方法來修複,或者移動檔案到運來的位置上

/mnt,/media: mnt目錄主要用來臨時挂載檔案系統,為某些裝置提供預設挂載點,如floppy,cdrom。這樣當挂載了一個裝置如光驅時,就可以通過通路目錄/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: 程式或服務啟動後。建議單獨分區,設定較大的磁盤空間。

/tmp:存放臨時檔案目錄,一些指令和應用程式會用的到這個目錄。該目錄下的所有檔案會被定時删除,以避免臨時檔案占滿整個磁盤。

/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:随機數裝置

/etc目錄

/etc/rc,/etc/rc.d,/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 的配置檔案,設定系統啟動時init程序将把系統設定成什麼樣的runlevel 。

/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/inetd.pid inetd這個程序的程序id

/etc/hosts.lpd 設定遠端有哪些節點可以使用本機的列印機

/etc/gateways 設定路由器

/etc/protocols 設定系統支援的協定

/etc/named.boot 設定本機為名字伺服器的配置檔案

/etc/named.pid 本機上運作的名字伺服器的程序id

/etc/networks 設定網絡的配置檔案

/etc/resolv.conf 設定系統的名字伺服器

/etc/services 設定系統的端品與協定類型和提供的服務

/etc/exports 設定nfs系統用的

/etc/nntp_inews_domain 設定新聞伺服器的配置檔案

/etc/nntpserver 設定使用者使用的新聞伺服器的位址

/etc/xf86config x window的配置檔案

/etc/hostid 系統獨有的一個硬體id

/etc/at.deny 設定哪些使用者不能使用at指令

/etc/bootptab 給makedev程式設定各種不同的裝置驅動檔案的格式

/etc/makedev.cfg 同devinfo一樣給makedev使用的設定檔案

/etc/diphosts 設定拔号伺服器的使用者名和密碼

/etc/slip.hosts,/etc/slip.login 設定slip的配置檔案

/etc/fastboot 使用shutdown -f産生的,重新開機系統要查這個檔案

/etc/fstab 記錄開機要mount的檔案系統

/etc/ftpaccess ftp伺服器的一些配置

/etc/ftpconversions 設定在ftp時使用的過濾器的位置

/etc/ftpusers 設定不能使用ftp服務的使用者

/etc/ld.so.cache 查找系統動态連結庫的緩存

/etc/ld.so.conf 系統動态連結庫的路徑

/etc/lilo.conf lilo的配置檔案

/etc/magic 給file指令使用的

/etc/aliases 給sendmail使用的設定别名的檔案

/etc/mail.rc,

/etc/mailcap,

/etc/sendmail.cf,

/etc/sendmail.st 設定sendmail的

/etc/motd 超級使用者釋出通知的地方

/etc/organization 存放使用者的名字群組織

/etc/pnpdevices 列出支援的plug&play裝置

/etc/snooptad 監控使用者的螢幕,監聽的終端清單

/etc/sudoers 可以sudo指令的配置檔案

/etc/syslog.conf 系統記錄程式syslogd的配置檔案

/etc/utmp 目前在用系統的使用者資訊

/etc/wtmp 同utmp差不多,隻是它累加

/etc/nologin 系統在shutdown時不希望使用者登入就産生這個檔案

/etc/termcap 設定系統終端資訊的

/etc/ttys 設定系統的終端類型

/etc/gettydefs getty_ps的定義檔案

/etc/yp.conf nis的配置檔案

/etc/mtools.conf 設定mtools程式的參數

/etc/fdprm 設定格式化軟碟的參數

/etc/login.access 控制使用者登入權限的檔案

/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/local 下。

/usr/etc 存放配置檔案。

/usr/games 存放遊戲和教學檔案。

/usr/include 開發和編譯應用程式所需要的頭檔案。

/usr/share 存放結構獨立的資料。

/usr/bin 幾乎所有使用者指令.有些指令在/bin 或/usr/local/bin 中。

/usr/sbin 根檔案系統不必要的系統管理指令,例如多數服務程式。

/usr/share/man , /usr/share/info , /usr/share/doc 手冊頁、gnu資訊文檔和各種其他文檔檔案。

/usr/lib 程式或子系統的不變的資料檔案,包括一些site-wide配置檔案,名字lib來源于庫(library), 程式設計的原始庫存在/usr/lib 裡。

/usr/local 本地安裝的軟體和其他檔案放在這裡,/usr/local/bin存放本地增加的指令,/usr/local/include存放本地增加的庫檔案。

/usr/src 存放程式的源代碼,linux核心的源代碼存放在/usr/src/kernels。

/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,/var/mail, /var/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 )的功能,亦即指向檔案内容放置的區塊之中,好讓作業系統可以正确的去取得檔案的内容啊

繼續閱讀