導航:首頁 > 文件類型 > linux程序文件結構

linux程序文件結構

發布時間:2023-09-01 15:32:48

『壹』 linux目錄結構

Windows操作系統抄的目錄結構,是以盤符為單位,C盤、D盤、E盤等等,數據存儲在各個盤符之下,而Linux操作系統最頂層只有一個根目錄root,所有文件都存儲在這一個根目錄之下。
Windows操作系統若插入一個外部設備(U盤等),在系統中是多了一個盤符H,對H盤的操作就是對外部設備的操作。Linux操作系統是在根目錄root下有一個名叫mnt的子目錄,在這個目錄下,會出現一個目錄,假設為sdcard,稱之為掛載點,對它的操作就是對外部設備的操作。
Windows操作系統某用戶登錄系統後,對所有文件都具有增刪改查的許可權,即:可以操作任意目錄,假設將C盤下Windows目錄刪除,則會導致系統異常,安全性較差。Linux操作系統對許可權要求比較嚴格,用戶登錄後並非對所有目錄具有增刪改查許可權,默認的當前目錄為根目錄下的home目錄下的soft01,稱之為主目錄,對這個目錄具有最高許可權,其餘目錄文件一般都是只讀的,不能隨意刪除,這樣就保證了安全性。

『貳』 linux驅動程序結構框架及工作原理分別是什麼

一、Linux device driver 的概念x0dx0ax0dx0a系統調用是操作系統內核和應用程序之間的介面,設備驅動程序是操作系統內核和機器硬體之間的介面。設備驅動程序為應用程序屏蔽了硬體的細節,這樣在應用程序看來,硬體設備只是一個設備文件,應用程序可以象操作普通文件一樣對硬體設備進行操作。設備驅動程序是內核的一部分,它完成以下的功能:x0dx0ax0dx0a1、對設備初始化和釋放;x0dx0ax0dx0a2、把數據從內核傳送到硬體和從硬體讀取數據;x0dx0ax0dx0a3、讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據;x0dx0ax0dx0a4、檢測和處理設備出現的錯誤。x0dx0ax0dx0a在Linux操作系統下有三類主要的設備文件類型,一是字元設備,二是塊設備,三是網路設備。字元設備和塊設備的主要區別是:在對字元設備發出讀/寫請求時,實際的硬體I/O一般就緊接著發生了,塊設備則不然,它利用一塊系統內存作緩沖區,當用戶進程對設備請求能滿足用戶的要求,就返回請求的數據,如果不能,就調用請求函數來進行實際的I/O操作。塊設備是主要針對磁碟等慢速設備設計的,以免耗費過多的CPU時間來等待。x0dx0ax0dx0a已經提到,用戶進程是通過設備文件來與實際的硬體打交道。每個設備文件都都有其文件屬性(c/b),表示是字元設備還是塊設備?另外每個文件都有兩個設備號,第一個是主設備號,標識驅動程序,第二個是從設備號,標識使用同一個設備驅動程序的不同的硬體設備,比如有兩個軟盤,就可以用從設備號來區分他們。設備文件的的主設備號必須與設備驅動程序在登記時申請的主設備號一致,否則用戶進程將無法訪問到驅動程序。x0dx0ax0dx0a最後必須提到的是,在用戶進程調用驅動程序時,系統進入核心態,這時不再是搶先式調度。也就是說,系統必須在你的驅動程序的子函數返回後才能進行其他的工作。如果你的驅動程序陷入死循環,不幸的是你只有重新啟動機器了,然後就是漫長的fsck。x0dx0ax0dx0a二、實例剖析x0dx0ax0dx0a我們來寫一個最簡單的字元設備驅動程序。雖然它什麼也不做,但是通過它可以了解Linux的設備驅動程序的工作原理。把下面的C代碼輸入機器,你就會獲得一個真正的設備驅動程序。x0dx0ax0dx0a由於用戶進程是通過設備文件同硬體打交道,對設備文件的操作方式不外乎就是一些系統調用,如 open,read,write,close?, 注意,不是fopen, fread,但是如何把系統調用和驅動程序關聯起來呢?這需要了解一個非常關鍵的數據結構:x0dx0ax0dx0aSTruct file_operatiONs {x0dx0ax0dx0aint (*seek) (struct inode * ,struct file *, off_t ,int);x0dx0ax0dx0aint (*read) (struct inode * ,struct file *, char ,int);x0dx0ax0dx0aint (*write) (struct inode * ,struct file *, off_t ,int);x0dx0ax0dx0aint (*readdir) (struct inode * ,struct file *, struct dirent * ,int);x0dx0ax0dx0aint (*select) (struct inode * ,struct file *, int ,select_table *);x0dx0ax0dx0aint (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long);x0dx0ax0dx0aint (*mmap) (struct inode * ,struct file *, struct vm_area_struct *);x0dx0ax0dx0aint (*open) (struct inode * ,struct file *);x0dx0ax0dx0aint (*release) (struct inode * ,struct file *);x0dx0ax0dx0aint (*fsync) (struct inode * ,struct file *);x0dx0ax0dx0aint (*fasync) (struct inode * ,struct file *,int);x0dx0ax0dx0aint (*check_media_change) (struct inode * ,struct file *);x0dx0ax0dx0aint (*revalidate) (dev_t dev);x0dx0ax0dx0a}x0dx0ax0dx0a這個結構的每一個成員的名字都對應著一個系統調用。用戶進程利用系統調用在對設備文件進行諸如read/write操作時,系統調用通過設備文件的主設備號找到相應的設備驅動程序,然後讀取這個數據結構相應的函數指針,接著把控制權交給該函數。這是linux的設備驅動程序工作的基本原理。既然是這樣,則編寫設備驅動程序的主要工作就是編寫子函數,並填充file_operations的各個域。x0dx0ax0dx0a下面就開始寫子程序。x0dx0ax0dx0a#include 基本的類型定義x0dx0ax0dx0a#include 文件系統使用相關的頭文件x0dx0ax0dx0a#include x0dx0ax0dx0a#include x0dx0ax0dx0a#include x0dx0ax0dx0aunsigned int test_major = 0;x0dx0ax0dx0astatic int read_test(struct inode *inode,struct file *file,char *buf,int count)x0dx0ax0dx0a{x0dx0ax0dx0aint left; 用戶空間和內核空間x0dx0ax0dx0aif (verify_area(VERIFY_WRITE,buf,count) == -EFAULT )x0dx0ax0dx0areturn -EFAULT;x0dx0ax0dx0afor(left = count ; left > 0 ; left--)x0dx0ax0dx0a{x0dx0ax0dx0a__put_user(1,buf,1);x0dx0ax0dx0abuf++;x0dx0ax0dx0a}x0dx0ax0dx0areturn count;x0dx0ax0dx0a}x0dx0ax0dx0a這個函數是為read調用准備的。當調用read時,read_test()被調用,它把用戶的緩沖區全部寫1。buf 是read調用的一個參數。它是用戶進程空間的一個地址。但是在read_test被調用時,系統進入核心態。所以不能使用buf這個地址,必須用__put_user(),這是kernel提供的一個函數,用於向用戶傳送數據。另外還有很多類似功能的函數。請參考,在向用戶空間拷貝數據之前,必須驗證buf是否可用。這就用到函數verify_area。為了驗證BUF是否可以用。x0dx0ax0dx0astatic int write_test(struct inode *inode,struct file *file,const char *buf,int count)x0dx0ax0dx0a{x0dx0ax0dx0areturn count;x0dx0ax0dx0a}x0dx0ax0dx0astatic int open_test(struct inode *inode,struct file *file )x0dx0ax0dx0a{x0dx0ax0dx0aMOD_INC_USE_COUNT; 模塊計數加以,表示當前內核有個設備載入內核當中去x0dx0ax0dx0areturn 0;x0dx0ax0dx0a}x0dx0ax0dx0astatic void release_test(struct inode *inode,struct file *file )x0dx0ax0dx0a{x0dx0ax0dx0aMOD_DEC_USE_COUNT;x0dx0ax0dx0a}x0dx0ax0dx0a這幾個函數都是空操作。實際調用發生時什麼也不做,他們僅僅為下面的結構提供函數指針。x0dx0ax0dx0astruct file_operations test_fops = {?x0dx0ax0dx0aread_test,x0dx0ax0dx0awrite_test,x0dx0ax0dx0aopen_test,x0dx0ax0dx0arelease_test,x0dx0ax0dx0a};x0dx0ax0dx0a設備驅動程序的主體可以說是寫好了。現在要把驅動程序嵌入內核。驅動程序可以按照兩種方式編譯。一種是編譯進kernel,另一種是編譯成模塊(moles),如果編譯進內核的話,會增加內核的大小,還要改動內核的源文件,而且不能動態的卸載,不利於調試,所以推薦使用模塊方式。x0dx0ax0dx0aint init_mole(void)x0dx0ax0dx0a{x0dx0ax0dx0aint result;x0dx0ax0dx0aresult = register_chrdev(0, "test", &test_fops); 對設備操作的整個介面x0dx0ax0dx0aif (result < 0) {x0dx0ax0dx0aprintk(KERN_INFO "test: can't get major number\n");x0dx0ax0dx0areturn result;x0dx0ax0dx0a}x0dx0ax0dx0aif (test_major == 0) test_major = result; /* dynamic */x0dx0ax0dx0areturn 0;x0dx0ax0dx0a}x0dx0ax0dx0a在用insmod命令將編譯好的模塊調入內存時,init_mole 函數被調用。在這里,init_mole只做了一件事,就是向系統的字元設備表登記了一個字元設備。register_chrdev需要三個參數,參數一是希望獲得的設備號,如果是零的話,系統將選擇一個沒有被佔用的設備號返回。參數二是設備文件名,參數三用來登記驅動程序實際執行操作的函數的指針。x0dx0ax0dx0a如果登記成功,返回設備的主設備號,不成功,返回一個負值。x0dx0ax0dx0avoid cleanup_mole(void)x0dx0ax0dx0a{x0dx0ax0dx0aunregister_chrdev(test_major,"test");x0dx0ax0dx0a}x0dx0ax0dx0a在用rmmod卸載模塊時,cleanup_mole函數被調用,它釋放字元設備test在系統字元設備表中佔有的表項。x0dx0ax0dx0a一個極其簡單的字元設備可以說寫好了,文件名就叫test.c吧。x0dx0ax0dx0a下面編譯 :x0dx0ax0dx0a$ gcc -O2 -DMODULE -D__KERNEL__ -c test.c _c表示輸出制定名,自動生成.o文件x0dx0ax0dx0a得到文件test.o就是一個設備驅動程序。x0dx0ax0dx0a如果設備驅動程序有多個文件,把每個文件按上面的命令行編譯,然後x0dx0ax0dx0ald ?-r ?file1.o ?file2.o ?-o ?molename。x0dx0ax0dx0a驅動程序已經編譯好了,現在把它安裝到系統中去。x0dx0ax0dx0a$ insmod ?_f ?test.ox0dx0ax0dx0a如果安裝成功,在/proc/devices文件中就可以看到設備test,並可以看到它的主設備號。要卸載的話,運行 :x0dx0ax0dx0a$ rmmod testx0dx0ax0dx0a下一步要創建設備文件。x0dx0ax0dx0amknod /dev/test c major minorx0dx0ax0dx0ac 是指字元設備,major是主設備號,就是在/proc/devices里看到的。x0dx0ax0dx0a用shell命令x0dx0ax0dx0a$ cat /proc/devicesx0dx0ax0dx0a就可以獲得主設備號,可以把上面的命令行加入你的shell script中去。x0dx0ax0dx0aminor是從設備號,設置成0就可以了。x0dx0ax0dx0a我們現在可以通過設備文件來訪問我們的驅動程序。寫一個小小的測試程序。x0dx0ax0dx0a#include x0dx0ax0dx0a#include x0dx0ax0dx0a#include x0dx0ax0dx0a#include x0dx0ax0dx0amain()x0dx0ax0dx0a{x0dx0ax0dx0aint testdev;x0dx0ax0dx0aint i;x0dx0ax0dx0achar buf[10];x0dx0ax0dx0atestdev = open("/dev/test",O_RDWR);x0dx0ax0dx0aif ( testdev == -1 )x0dx0ax0dx0a{x0dx0ax0dx0aprintf("Cann't open file \n");x0dx0ax0dx0aexit(0);x0dx0ax0dx0a}x0dx0ax0dx0aread(testdev,buf,10);x0dx0ax0dx0afor (i = 0; i < 10;i++)x0dx0ax0dx0aprintf("%d\n",buf[i]);x0dx0ax0dx0aclose(testdev);x0dx0ax0dx0a}x0dx0ax0dx0a編譯運行,看看是不是列印出全1 x0dx0ax0dx0a以上只是一個簡單的演示。真正實用的驅動程序要復雜的多,要處理如中斷,DMA,I/O port等問題。這些才是真正的難點。上述給出了一個簡單的字元設備驅動編寫的框架和原理,更為復雜的編寫需要去認真研究LINUX內核的運行機制和具體的設備運行的機制等等。希望大家好好掌握LINUX設備驅動程序編寫的方法。

『叄』 Linux文件組織結構是什麼

一切從「/」開始

在Linux系統中,目錄、字元設備、塊設備、套接字、列印機等都被抽象成了文件,即劉遄老師所一直強調的「Linux系統中一切都是文件」。既然平時我們打交道的都是文件,那麼又應該如何找到它們呢?在Windows操作系統中,想要找到一個文件,我們要依次進入該文件所在的磁碟分區(假設這里是D盤),然後在進入該分區下的具體目錄,最終找到這個文件。但是在Linux系統中並不存在C/D/E/F等盤符,Linux系統中的一切文件都是從「根(/)」目錄開始的,並按照文件系統層次化標准(FHS)採用樹形結構來存放文件,以及定義了常見目錄的用途。另外,Linux系統中的文件和目錄名稱是嚴格區分大小寫的。例如,root、rOOt、Root、rooT均代表不同的目錄,並且文件名稱中不得包含斜杠(/)。Linux系統中的文件存儲結構如圖6-1所示。

前文提到的FHS是根據以往無數Linux系統用戶和開發者的經驗而總結出來的,是用戶在Linux系統中存儲文件時需要遵守的規則,用於指導我們應該把文件保存到什麼位置,以及告訴用戶應該在何處找到所需的文件。但是,FHS對於用戶來講只能算是一種道德上的約束,有些用戶就是懶得遵守,依然會把文件到處亂放,有些甚至從來沒有聽說過它。這里並不是號召各位讀者去譴責他們,而是建議大家要靈活運用所學的知識,千萬不要認准這個FHS協定只講死道理,不然吃虧的可就是自己了。《Linux就該這么學》一起學習linux, 在Linux系統中,最常見的目錄以及所對應的存放內容如表所示。

Linux系統中常見的目錄名稱以及相應內容

目錄名稱 應放置文件的內容

/boot 開機所需文件—內核、開機菜單以及所需配置文件等

/dev 以文件形式存放任何設備與介面

/etc 配置文件

/home 用戶主目錄

/bin 存放單用戶模式下還可以操作的命令

/lib 開機時用到的函數庫,以及/bin與/sbin下面的命令要調用的函數

/sbin 開機過程中需要的命令

/media 用於掛載設備文件的目錄

/opt 放置第三方的軟體

/root 系統管理員的家目錄

/srv 一些網路服務的數據文件目錄

/tmp 任何人均可使用的「共享」臨時目錄

/proc 虛擬文件系統,例如系統內核、進程、外部設備及網路狀態等

/usr/local 用戶自行安裝的軟體

/usr/sbin Linux系統開機時不會使用到的軟體/命令/腳本

/usr/share 幫助與說明文件,也可放置共享文件

/var 主要存放經常變化的文件,如日誌

/lost+found 當文件系統發生錯誤時,將一些丟失的文件片段存放在這里

『肆』 Linux系統中的文件目錄結構介紹

目錄結構及主要內容

「/」根目錄部分有以下子目錄:

/usr 目錄包含所有的命令、程序庫、文檔和其它文件。這些文件在正常操作中不會被改變的。這個目錄也包含你的Linux發行版本的主要的應用程序,譬如,Netscape。

/var 目錄包含在正常操作中被改變的文件:假離線文件、記錄文件、加鎖文件、臨時文件和頁格式化文件等。

/home 目錄包含用戶的文件:參數設置文件、個性化文件、文檔、數據、EMAIL、緩存數據等。這個目錄在系統省級時應該保留。

/proc 目錄整個包含虛幻的文件。它們實際上並不存在磁碟上,也不佔用任何空間。(用ls –l 可以顯示它們的大小)當查看這些文件時,實際上是在訪問存在內存中的信息,這些信息用於訪問系統

/bin 系統啟動時需要的執行文件(二進制),這些文件可以被普通用戶使用。

/sbin 系統執行文件(二進制),這些文件不打算被普通用戶使用。(普通用戶仍然可以使用它們,但要指定目錄。)

/etc 操作系統的配置文件目錄。

/root 系統管理員(也叫超級用戶或根用戶)的Home目錄。

/dev 設備文件目錄。LINUX下設備被當成文件,這樣一來硬體被抽象化,便於讀寫、網路共享以及需要臨時裝載到文件系統中。正常情況下,設備會有一個獨立的子目 錄。這些設備的內容會出現在獨立的子目錄下。LINUX沒有所謂的驅動符。

/lib 根文件系統目錄下程序和核心模塊的共享庫。

/boot 用於自舉載入程序(LILO或GRUB)的文件。當計算機啟動時(如果有多個操作系統,有可能允許你選擇啟動哪一個操作系統),這些文件首先被裝載。這個目錄也會包含LINUX核(壓縮文件vmlinuz),但LINUX核也可以存在別處,只要配置LILO並且LILO知道LINUX核在哪兒。

/opt 可選的應用程序,譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的XWINDOWS應用程序中,主執行程序在/usr/bin目錄下)

/tmp 臨時文件。該目錄會被自動清理干凈。

/lost+found 在文件系統修復時恢復的文件

「/usr」目錄下比較重要的部分有:

/usr/X11R6 X-WINDOWS系統(version 11, release 6)

/usr/X11 同/usr/X11R6 (/usr/X11R6的符號連接)

/usr/X11R6/bin 大量的小X-WINDOWS應用程序(也可能是一些在其它子目錄下大執行文件的符號連接)。

/usr/doc LINUX的文檔資料(在更新的系統中,這個目錄移到/usr/share/doc)。

/usr/share 獨立與你計算機結構的數據,譬如,字典中的詞。

/usr/bin和/usr/sbin 類似與「/」根目錄下對應的目錄(/bin和/sbin),但不用於基本的啟動(譬如,在緊急維護中)。大多數命令在這個目錄下。

/usr/local 本地管理員安裝的應用程序(也可能每個應用程序有單獨的子目錄)。在「main」安裝後,這個目錄可能是空的。這個目錄下的內容在重安裝或升級操作系統後應該存在。

/usr/local/bin 可能是用戶安裝的小的應用程序,和一些在/usr/local目錄下大應用程序的符號連接。

/proc目錄的內容:

/proc/cpuinfo 關於處理器的信息,如類型、廠家、型號和性能等。

/proc/devices 當前運行內核所配置的所有設備清單。

/proc/dma 當前正在使用的DMA通道。/proc/filesystems 當前運行內核所配置的文件系統。

/proc/interrupts 正在使用的中斷,和曾經有多少個中斷。

/proc/ioports 當前正在使用的I/O埠。

舉例,使用下面的命令能讀出系統的CPU信息。

cat /proc/cpuinfo

/bin
bin是binary的縮寫。這個目錄沿襲了UNIX系統的結構,存放著使用者最經常使用的命令。例如cp、ls、cat,等等。

/boot
這里存放的是啟動Linux時使用的一些核心文件。

/dev
dev是device(設備)的縮寫。這個目錄下是所有Linux的外部設備,其功能類似DOS下的.sys和Win下的.vxd。在Linux中設備和文件是用同種方法訪問的。例如:/dev/hda代表第一個物理IDE硬碟。

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

/home
用戶的主目錄,比如說有個用戶叫wang,那他的主目錄就是/home/wang也可以用~wang表示。

/lib
這個目錄里存放著系統最基本的動態鏈接共享庫,其作用類似於Windows里的.dll文件。幾乎所有的應用程序都須要用到這些共享庫。

/lost+found
這個目錄平時是空的,當系統不正常關機後,這里就成了一些無家可歸的文件的避難所。對了,有點類似於DOS下的.chk文件。

/mnt
這個目錄是空的,系統提供這個目錄是讓用戶臨時掛載別的文件系統。

/proc
這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。也就是說,這個目錄的內容不在硬碟上而是在內存里。

/root
系統管理員(也叫超級用戶)的主目錄。作為系統的擁有者,總要有些特權啊!比如單獨擁有一個目錄。

/sbin
s就是Super User的意思,也就是說這里存放的是系統管理員使用的管理程序。

/tmp
這個目錄不用說,一定是用來存放一些臨時文件的地方了。

/usr
這是最龐大的目錄,我們要用到的應用程序和文件幾乎都存放在這個目錄下。其中包含以下子目錄;

/usr/X11R6
存放X-Window的目錄;

/usr/bin
存放著許多應用程序;

/usr/sbin
給超級用戶使用的一些管理程序就放在這里;

/usr/doc
這是Linux文檔的大本營;

/usr/include
Linux下開發和編譯應用程序需要的頭文件,在這里查找;

/usr/lib
存放一些常用的動態鏈接共享庫和靜態檔案庫;

/usr/local
這是提供給一般用戶的/usr目錄,在這里安裝軟體最適合;

/usr/man
man在Linux中是幫助的同義詞,這里就是幫助文檔的存放目錄;

/usr/src
Linux開放的源代碼就存在這個目錄,愛好者們別放過哦!

/var
這個目錄中存放著那些不斷在擴充著的東西,為了保持/usr的相對穩定,那些經常被修改的目錄可以放在這個目錄下,實際上許多系統管理員都是這樣乾的。順帶說一下系統的日誌文件就在/var/log目錄中。

總結來說:

· 用戶應該將文件存在/home/user_login_name目錄下(及其子目錄下)。

· 本地管理員大多數情況下將額外的軟體安裝在/usr/local目錄下並符號連接在/usr/local/bin下的主執行程序。

· 系統的所有設置在/etc目錄下。

· 不要修改根目錄(「/」)或/usr目錄下的任何內容,除非真的清楚要做什麼。這些目錄最好和LINUX發布時保持一致。

· 大多數工具和應用程序安裝在目錄:/bin, /usr/sbin, /sbin, /usr/x11/bin,/usr/local/bin。

· 所有的文件在單一的目錄樹下。沒有所謂的「驅動符」。

『伍』 Linux文件系統的核心結構

Linux下的文件系統為樹形結構,入口為/ 樹形結構下的文件目錄: 無論哪個版本的Linux系統,都有這些目錄,這些目錄應該是標準的。各個Linux發行版本會存在一些小小的差異,但總體來說,還是大體差不多。

1. / 文件系統的入口,最高一級目錄;
2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。
3. /boot 包含Linux內核及系統引導程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;
4. /dev 設備文件存儲目錄,比如音效卡、磁碟... ... 這是一個非常有趣的目錄,是Linux文件系統的一個閃亮的特性 - 所有對象都是文件或目錄。仔細觀察這個目錄你會發現hda1, hda2等, 它們代表系統主硬碟的不同分區。
/dev/cdrom和/dev/fd0代表你的CDROM驅動器和floppy驅動器。看上去可能有些奇怪,但比較文件和硬體的特性這卻是十分合理的。它們都可以讀出和寫入。例如/dev/dsp,這個文件代表你的揚聲器。那麼寫入這個文件的數據都回傳送到喇叭。試一試 'cat /etc/lilo.conf > /dev/dsp' 你會聽到一些聲音。這是你的 lilo.conf 文件的聲音!同樣,向 /dev/ttyS0 ( COM 1 ) 讀出或寫入數據你可以和接到上面的設備進行通訊。
5. /etc 存放系統程序或者一般工具的配置文件。
如安裝了apache2之後,配置文件在/etc/apache2/目錄下。
/etc/init.d 這個目錄是用來存放系統或伺服器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。
如apache2的/etc/init.d apache2 start|stop|restart MySQL為/etc/init.d mysql start|stop|restart
6. /home 普通用戶默認存放目錄 Linux 是多用戶環境,所以每一個用戶都有一個只有自己可以訪問的目錄(當然管理員也可以訪問)。它們以 /home/username 的方式存在。這個目錄也保存一些應用對於這個用戶的配置,比如 IRC, X 等。
7. /lib 庫文件存放目錄這里包含了系統程序所需要的所有共享庫文件,類似於 Windows 的共享庫 DLL 文件。
8. /lost+found 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsck工具會檢查這里,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
Linux 應該正確的關機。但有時你的系統也可能崩潰掉或突然斷電使系統意外關機。那麼啟動的時候 fsck 將會進行長時間的文件系統檢查。Fsck 會檢測並試圖恢復所發現的不正確的文件。被恢復的文件會放置在這個目錄中。所恢復的文件也許並不完整或並不合理,但畢竟提供了一些恢復數據的機會。

9. /media 即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載後,會在這個目錄下產生一個目錄 ;CDROM/DVD自動掛載後,也會在這個目錄中創建一個目錄,類似cdrom 的目錄。這個只有在最新的發行套件上才有.
10. /mnt /mnt 這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom 等目錄。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這里也是可以的。比如光碟機可以掛載到/mnt/cdrom 。
這是一個普通的載入目錄,在這里你可以載入你的文件系統或設備。
載入是使一個文件系統對於系統可用的過程。
在載入後你的文件可以在載入目錄下訪問。
這個目錄通常包含載入目錄或用於載入軟碟機和光碟機的子目錄。
如果需要,你也可以在這里建立其它的載入目錄。
對於載入目錄的位置並沒有強制性的要求,你可以在系統的任意位置建立載入目錄。
建立 /mnt 只是為了使系統更工整的慣例。
11. /opt 表示的是可選擇的意思,有些軟體包也會被安裝在這里,也就是自定義軟體包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這里。有些我們自己編譯的軟體包,就可以安裝在這個目錄中;通過源碼包安裝的軟體,可以通過 ./configure --prefix=/opt/,將軟體安裝到opt目錄。
這個目錄包含所有默認系統安裝之外的軟體和添加的包。
12. /proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬碟分區、內存信息等)存放在這里。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。
這是系統中極為特殊的一個目錄,實際上任何分區上都不存在這個目錄。它實際是個實時的、駐留在內存中的文件系統。
13. /root Linux超級許可權用戶root的家目錄;
14. /sbin 大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地,普通用戶無許可權執行這個目錄下的命令;
這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin 目錄是相似的; 我們記住就行了,凡是目錄sbin中包含的都是root許可權才能執行的。
15. /tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。 /tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
許多程序在這里建立lock文件和存儲臨時數據。有些系統會在啟動或關機時清空此目錄。
16. /usr 這個是系統存放程序的目錄,比如命令、幫助文件等。這個目錄下有很多的文件和目錄。
當我們安裝一個Linux發行版官方提供的軟體包時,大多安裝在這里。
如果有涉及伺服器配置文件的,會把配置文件安裝在/etc目錄中。
/usr目錄下包括:
涉及字體目錄/usr/share/fonts ,
幫助目錄 /usr/share/man或/usr/share/doc,
普通用戶可執行文件目錄/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,
超級許可權用戶root的可執行命令存放目錄,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;
還有程序的頭文件存放目錄/usr/include。
/usr/bin 這個目錄是可執行程序的目錄,普通用戶就有許可權執行; 當我們從系統自帶的軟體包安裝一個程序時,他的可執行文件大多會放在這個目錄。
/usr/sbin 這個目錄也是可執行程序的目錄,但大多存放涉及系統管理的命令。只有root許可權才能執行;相似目錄是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等;
/usr/local 這個目錄一般是用來存放用戶自編譯安裝軟體的存放目錄;一般是通過源碼包安裝的軟體,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中。這個目錄下面有子目錄。
/usr/lib 和/lib 目錄相似,是庫文件的存儲目錄;
/usr/share 系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,是用戶都共用的吧。
/usr/share/doc和/usr/share/man幫助文件,也是共用的吧;
/usr/src 是內核源碼存放的目錄,比如下面有內核源碼目錄,比如 linux 、linux-2.xxx.xx 目錄等。有的系統也會把源碼軟體包安裝在這里。比如Fedora/Redhat,當我們安裝file.src.rpm的時候,這些軟體包會安裝在 /usr/src/redhat相應的目錄中。請參考: 《file.src.rpm 使用方法的簡單介紹》 。另外Fedhat 4.0 5.0,他的內核源碼包的目錄位於/usr/src/kernels目錄下的某個目錄中(只有安裝後才會生成相應目錄);
17. /var 這個目錄的內容是經常變動的,看名字就知道,我們可以理解為vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。
/var/www目錄是定義Apache伺服器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地;
/var/log 系統日誌存放,分析日誌要看這個目錄的東西;
/var/spool 列印機、郵件、代理伺服器等假離線目錄;
上面內容參考於
http://blog.sina.com.cn/s/blog_662234020101ebfd.html

這是我的linux系統目錄結構
administrator@ubuntu:/$ ls -l
總用量 100
drwxr-xr-x 2 root root 4096 8月 22 07:33 bin
drwxr-xr-x 3 root root 4096 8月 22 07:34 boot
drwxr-xr-x 2 root root 4096 8月 22 07:29 cdrom
drwxr-xr-x 16 root root 4320 11月 1 22:26 dev
drwxr-xr-x 136 root root 12288 11月 1 22:38 etc
drwxr-xr-x 5 root root 4096 10月 24 10:02 home
drwxrwxrwx 1 root root 4096 10月 31 18:59 host
lrwxrwxrwx 1 root root 32 8月 22 07:31 initrd.img -> boot/initrd.img-3.5.0-17-generic
lrwxrwxrwx 1 root root 33 8月 22 07:14 initrd.img.old -> /boot/initrd.img-3.5.0-17-generic
drwxr-xr-x 21 root root 4096 8月 22 07:33 lib
drwx------ 2 root root 16384 8月 22 07:14 lost+found
drwxr-xr-x 3 root root 4096 8月 24 22:13 media
drwxr-xr-x 2 root root 4096 10月 9 2012 mnt
drwxr-xr-x 2 root root 4096 10月 17 2012 opt
dr-xr-xr-x 205 root root 0 11月 2 2015 proc
drwx------ 8 root root 4096 8月 24 23:48 root
drwxr-xr-x 22 root root 780 11月 1 22:27 run
drwxr-xr-x 2 root root 12288 8月 22 07:34 sbin
drwxr-xr-x 2 root root 4096 6月 11 2012 selinux
drwxr-xr-x 2 root root 4096 10月 17 2012 srv
dr-xr-xr-x 13 root root 0 11月 2 2015 sys
drwxrwxrwt 8 root root 4096 11月 1 22:44 tmp
drwxr-xr-x 10 root root 4096 10月 17 2012 usr
drwxr-xr-x 15 root root 4096 10月 25 23:11 var
lrwxrwxrwx 1 root root 29 8月 22 07:31 vmlinuz -> boot/vmlinuz-3.5.0-17-generic

administrator@ubuntu:~$ pwd
/home/administrator
administrator@ubuntu:~$ cd ..
administrator@ubuntu:/home$ cd ..
administrator@ubuntu:/$
linux的console界面的默認路徑不是根目錄
建議看看劉遄老師的《linux就該這么學》,書籍當中有詳細的描述

『陸』 Linux系統一般由哪4個部分組成

linux系統由硬體系統、系統核心、用戶環境、應用程序組成。Linux全稱GNU/Linux,是一種回免費使用和自由答傳播的類UNIX操作系統。

其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。

(6)linux程序文件結構擴展閱讀:

優點

1、Linux由眾多微內核組成,其源代碼完全開源;

2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發出新的協議棧。

3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性;

『柒』 求Linux文件系統的目錄結構

linux操作系統中的主要目錄及目錄內容由文件系統層次結構標准(英語:filesystem
hierarchy
standard,fhs)定義。
在fhs中,所有的文件和目錄都出現在根目錄"/"下,即使他們存儲在不同的物理設備中。但是請注意,這些目錄中的一些可能或可能不會在linux系統上出現,這取決於系統是否含有某些子系統,例如
x
window系統
的安裝與否。
下面是fhs中所定義的一些目錄,和目錄的描述:
/bin
二進制可執行命令
/dev
設備特殊文件
/etc
系統管理和配置文件
/etc/rc.d
啟動的配置文件和腳本
/home
用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示
/lib
標准程序設計庫,又叫動態鏈接共享庫,作用類似windows里的.dll文件
/sbin
系統管理命令,這里存放的是系統管理員使用的管理程序
/tmp
公用的臨時文件存儲點
/root
系統管理員的主目錄
/mnt
系統提供這個目錄是讓用戶臨時掛載其他的文件系統。
/lost+found
這個目錄平時是空的,系統非正常關機而留下「無家可歸」的文件(windows下叫什麼.chk)就在這里
/proc
虛擬的目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息。
/var
某些大文件的溢出區,比方說各種服務的日誌文件
/usr
最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。其中包含:
/usr/x11r6
存放x
window的目錄
/usr/bin
眾多的應用程序
/usr/sbin
超級用戶的一些管理程序
/usr/doc
linux文檔
/usr/include
linux下開發和編譯應用程序所需要的頭文件
/usr/lib
常用的動態鏈接庫和軟體包的配置文件
/usr/man
幫助文檔
/usr/src
源代碼,linux內核的源代碼就放在/usr/src/linux里
/usr/local/bin
本地增加的命令
/usr/local/lib
本地增加的庫

閱讀全文

與linux程序文件結構相關的資料

熱點內容
什麼app軟體買機票便宜 瀏覽:874
盛京醫院開葯在APP掛什麼科 瀏覽:842
初三一模後如何教學視頻教程 瀏覽:902
車床編程如何通過度數來編程 瀏覽:93
安卓2k17怎麼設置首發 瀏覽:945
b站微信 瀏覽:567
手機2個微信 瀏覽:914
常用手機下載的文件在哪裡 瀏覽:669
phpmemcache所有版本 瀏覽:738
ps自動排版文件名去 瀏覽:4
java網路爬蟲入門到精通 瀏覽:481
最火直播app 瀏覽:44
蘋果6ssim卡應用程序 瀏覽:889
qq浮動窗口代碼 瀏覽:232
備件管理有哪些好用的手機app 瀏覽:847
小米網路音箱如何關機 瀏覽:916
usb數據線哪個是火線 瀏覽:164
win10提示重新激活windows10 瀏覽:13
手機自裝app如何卸載 瀏覽:689
win10任務欄標簽變小 瀏覽:728

友情鏈接