天天看點

Linux基礎之常識(一)

    趁着這幾日找工作,把一些知識簡單的整理一下,形成邏輯,内化吸收,真正做到随手可寫,随時可用,真正的成為骨子裡的東西而不是會“用”,而不會“寫”!細想一下,還真的是指令雖然簡單,但有時真的讓你立即去執行的時候,還是會出現卡頓的。純個人觀點,如果有一些不恰當地方或者明顯錯誤的地方希望大家指正,有些東西當然借鑒的,若有涉及到版權問題,請及時與本人聯系,我将立即删除。

    對Linux有一定了解的人想必都應該知道,盡管通常我們将Linux核心和GNU工具鍊的結合體稱為Linux,但是一些Linux純粹主義者将其稱為GNU/Linux系統來表彰GNU組織為此所做的貢獻。當然,我自己也是比較傾向于後者GNU/Linux。因為這個名字完全而準确的指出了Linux的組成:Linux核心+GNU工具元件。也有人說還有圖形化桌面環境和應用軟體,也不否認,但我仍堅持認為,前兩者是最核心的,它們應經提供了良好的人機互動體驗,是以這裡簡單Linux核心和GNU工具元件。

    Linux系統的核心是核心。核心控制着計算機系統上的所有硬體和軟體:必要時配置設定硬體,有需要時執行軟體。 核心負責以下四項主要功能:   

系統記憶體管理

軟體程式管理

硬體裝置管理

檔案系統管理

    作業系統核心個基本功能之一是記憶體管理。核心不僅管理伺服器上的可用實體記憶體,還可以建立和管理虛拟記憶體(即并不實際存在的記憶體)。

    你可以通過/proc/meminfo檔案來觀察Linux系統上虛拟記憶體的目前狀态。

Linux基礎之常識(一)

    MemTotal:行表明這個Linux伺服器有500M的記憶體(虛拟機),該檔案表明大約有9M的空閑空間剩餘(MemFree)。也是醉了,湊合說明問題就行了,輸出表明這個系統上大約有2GB的交換空間(SwapTotal)。

    Linux作業系統稱運作的程式為程序。程序可以在前台運作,将輸出顯示在螢幕上;也可以在背景運作,隐藏到幕後。核心控制着Linux系統如何管理運作在系統上的所有程序。

    核心建立了第一個程序(init程序)來啟動系統上所有其他程序。當核心啟動時,他會将init程序加載到虛拟記憶體中。核心在啟動任何其他程序時,都會在虛拟記憶體中給新程序配置設定一塊專有區域來存儲改程序用到的資料和代碼。

    一些Linux系統發行版是由一個表來管理在系統開機時要自動啟動的程序。在Linux系統上,這個表通常位于專門檔案/etc/inittab中。

  核心的另一職責就是管理硬體裝置。任何需要和Linux系統之間通信的裝置,都需要在核心中加入其驅動程式的代碼(driver code)。驅動程式代碼相當于應用程式和硬體裝置的中間人,允許核心同裝置之間交換資料。在Linux核心中有兩種方法用來插入裝置驅動代碼:

a、編譯進核心的裝置驅動代碼

b、可插入核心的裝置驅動子產品

    Linux系統将硬體裝置當成特殊的檔案,稱為裝置檔案。裝置檔案有三種不同的分類:

字元型裝置檔案

塊裝置檔案

網絡裝置檔案

Linux為系統上的每個裝置檔案都建立一種特殊的檔案,稱為“節點”。與裝置的所有通信都是通過裝置節點完成的。每個節點都有一個唯一的數值對,供Linux核心辨別他。數值對包括一個主裝置号和一個個次裝置号。類似的裝置被劃分到同樣的主裝置号下。次裝置号用來辨別同一主裝置号下的某個特殊裝置。

檔案系統管理Linux支援多種檔案系統,任何供Linux伺服器通路的硬碟都必須格式化成檔案系統的一種。Linux核心采用虛拟檔案系統(VFS)作為和每個檔案系統互動的接口。這位Linux核心同任何類型檔案系統通信提供了一個标準接口,當每個檔案系統被挂載和使用時,VFS将資訊都緩存在記憶體中。

    GNU工具鍊

核心GNU工具鍊

  GNU coreutils軟體包有3部分組成:

用于處理文本的工具

用于操作文本的工具

用于管理程序的工具

    這三組主要工具中的每一組都包含一些對Linux系統管理者和程式員至關重要的工具。

2.  shell

    簡單點了解,就是系統跟計算機硬體互動時使用的中間媒體,它隻是系統的一個工具。實際上,在shell和計算機硬體之間還有一層東西那就是系統核心了。打個比方,如果把計算機硬體比作一個人的軀體,而系統核心則是人的大腦,至于shell,把它比作人的五官似乎更加貼切些。回到計算機上來,使用者直接面對的不是計算機硬體而是shell,使用者把指令告訴shell,然後shell再傳輸給系統核心,接着核心再去支配計算機硬體去執行各種操作。

         我接觸的linux釋出版本(Redhat/CentOS)系統預設安裝的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增強版本。Bourn Shell 是最早行起來的一個shell,創始人叫Steven Bourne,為了紀念他是以叫做Bourn Shell,檢稱sh。

繼續閱讀