我的Linux學習筆記·Linux操作系統(tǒng)基礎
今天的筆記主要是關于Linux操作系統(tǒng)根底的相關學問。那就從我面前的電腦開端講起。
計算機和操作系統(tǒng)
計算機主要包括五個部分:運算器,控制器,存儲器,輸入設備和輸出設備。通常,運算器,控制器再加上其他一些部件如寄存器等構成了我們通常所說的CPU(central processing unit),存儲器則主要是內(nèi)存。運算器,控制器和存儲器可以實現(xiàn)數(shù)據(jù)的處理.
但是數(shù)據(jù)從何而來,運算之后的結果去往哪里?
這就需要輸入設備和輸出設備(I/O設備)。我們通常用到的輸入設備包括鍵盤鼠標等,輸出設備為屏幕,打印機等。值得一提的是,計算機中有個叫做硬盤的東西,它并不是存儲器,而是一個I/O設備。在將數(shù)據(jù)讀取到內(nèi)存時,它是一個輸入設備;而將結果保存到磁盤時,它就變成了一個輸出設備。
這么多設備整合在一起,就成了一臺計算機。它可以接收我們的指令(鍵盤鼠標),通過運算(CPU),把結果展示給我們(屏幕,硬盤等)。
但是這么多硬件是如何協(xié)調(diào)作用,共同完成一個任務而不會我行我素地亂來呢?我們需要一個東西,它可以控制硬件有序地工作,各自執(zhí)行自己的任務,這個東西就是操作系統(tǒng)(Operating System)。
操作系統(tǒng)是一個特殊的軟件,它的任務就是硬件管理—控制CPU的運算,控制內(nèi)存的分配,控制計算機的幾乎一切。假如一臺電腦沒有操作系統(tǒng),它可能只是一個藝術品,或者一堆廢鐵。
一個完整的操作系統(tǒng)包括內(nèi)核和一些輔助軟件。
內(nèi)核的主要任務就是進行硬件管理,它是一個操作系統(tǒng)最基礎最底層的東西。內(nèi)核若想很好地控制硬件并使其發(fā)揮相應的功能,需要和硬件相識相知相愛,他倆可以成為完美的一對,全都仰仗于驅(qū)動的幫忙。驅(qū)動是硬件的靈魂,它向操作系統(tǒng)提供了訪問和使用硬件的接口,以便在某項任務中最高效地調(diào)用硬件。
什么是Linux
Linux就是一個操作系統(tǒng),它可以管理整個計算機硬件,并且可以接收我們的指令,來指揮硬件完成相應的任務,并把結果反饋給我們。Linux是由Linus Torvalds在1991年開發(fā)的,它穩(wěn)定性高,配置要求低,而且免費。不同的發(fā)行商使用Linux內(nèi)核,對其進行軟件和管理工具的封裝,形成了不同的Linux發(fā)行版。不同發(fā)行版之間的差別并不是太大,根據(jù)發(fā)行商的不同,各種Linux發(fā)行版也被分為多個系列:如紅帽系列的RedHat, CentOs, Fedora; Debian系列的Ubuntu, Mint以及Suse系列等。
Shell:用戶與內(nèi)核之間的中介
操作系統(tǒng)除了要與硬件打交道,還要和我們?nèi)祟惔蚪坏?,畢竟電腦是為人民服務。而我們與系統(tǒng)之間的交互,仰仗于一個重要的軟件—Shell。
Shell是用戶與內(nèi)核之間的中介,我們可以把它當作一個命令解釋器,我們輸入某些命令,shell將它解釋成內(nèi)核可以理解的語言,從而使內(nèi)核執(zhí)行后續(xù)的相關操作。
Shell可以分為圖形界面shell(GraphicalUser Interface,GUI)和命令行shell(Command Line Interface,GLI)。我們常用的windows操作系統(tǒng)所用的WindowsExplorer就是圖形界面的shell,而在Linux中流行的bash則是命令行shell。當然,Linux中也有圖形界面的shell,如x-window等。后面我們會慢慢講到Shell(bash)的一些特性。
Linux的根文件系統(tǒng)
Linux的基本哲學之一:“一切皆文件”。
不管是普通的文件,目錄還是設備,在Linux中都被當作文件并對其進行操作。而Linux對這些文件進行管理則主要依賴于它的根文件系統(tǒng)(root file system)。
Linux下的每一個文件都必須處于根文件系統(tǒng)下的某一路徑,最底層的路徑為root,我們用/來表示。/下可以延伸出其他路徑,這個路徑下可以有文件或者目錄(目錄也是一種特殊的文件)。Linux系統(tǒng)的一切都處于/下,為了方便的大家的管理和使用,F(xiàn)ilesystem Hierarchy Standard (文件系統(tǒng)層次標準,F(xiàn)HS)應運而生。簡單地講,F(xiàn)HS定義了根下的某個特定目錄必須放置特定類型文件,而不能隨意更改。比如/boot下只能放置系統(tǒng)啟動相關的文件,/etc下是系統(tǒng)主要的配置文件,而任何設備文件都在/dev目錄下。
我們使用tree命令可以顯示/目錄下的各個子目錄,以及子目錄下的內(nèi)容。比如我們進入到根目錄,看看這個目錄下有哪個寫子目錄,可以使用
Tree –L 1;
我們會發(fā)現(xiàn),根目錄下有多個子目錄,而這些子目錄的名字以及目錄下的文件都是被定義好的,下面是FHS系統(tǒng)的詳細說明:
/boot:系統(tǒng)啟動相關文件,如內(nèi)核、initrd,以及grub(bootloader)
/dev:設備文件。Linux下一切皆文件,設備也是以文件的形式存在于這個目錄中,里面存放有如/dev/hd*,/dev/sd*等設備文件。
/etc:配置文件。如用戶的賬號文件/etc/passwd,密碼文件:/etc/shadow等都存放在這個目錄中。
/home:用戶的家目錄。用戶登陸后默認處于自己的家目錄中,常用~代表當前用戶的家目錄。
/root:管理員的家目錄
/lib:庫文件,主要放置開機時會用到的庫。庫文件可以分為靜態(tài)庫(*.a)和動態(tài)庫(*.so)。庫文件不能單獨執(zhí)行,只能被調(diào)用
/media:掛載點目錄,通常用于掛載移動設備
/mnt:額外的臨時文件系統(tǒng),如光盤
/opt:可選目錄,早期為第三方程序安裝目錄
/proc:偽文件系統(tǒng),內(nèi)核映射文件,為內(nèi)核工作的統(tǒng)計數(shù)據(jù)等
只有內(nèi)核運行時才有文件,關機下為空的
/sys:偽文件系統(tǒng),跟硬件設備相關的屬性映射文件
/tmp:臨時文件
/var:可變化文件
/bin:binary,可執(zhí)行文件,用戶命令
/sbin:管理命令
/usr:universal shared read-only,全局共享只讀文件
/usr/bin
/usr/sbin
usr下的bin和sbin是與系統(tǒng)提供某些功能相關的命令
根目錄下的bin和sbin是和系統(tǒng)啟動相關的命令
更詳細的信息大家可以參照:
通過上面我們了解了什么是Linux系統(tǒng)以及它的根文件系統(tǒng),基本都是一些理論知識,但是個人覺得了解這些知識還是挺有必要的。后面,如果我們要想真正開始使用Linux系統(tǒng),首先還要學會一些基本的命令,如:
目錄管理命令:mkdir, rmdir
文件管理命令:touch, rm, cp,mv
文本查看命令:cat, tac,more, less, head, tail
文本處理命令:cut, sort,uniq, wc, tr
以及一些其他常用命令如ls, cd,alias, history等。詳細的運用能夠參考我們之前的一些生信入門文章或者網(wǎng)上搜一下。
馬哥學習交流群
?