1.Linux內(nèi)核
Linux
內(nèi)核內(nèi)部功能:驅(qū)動(dòng)程序、內(nèi)存管理、進(jìn)程管理罐寨、安全管理域滥、網(wǎng)絡(luò)功能和文件系統(tǒng)
驅(qū)動(dòng)程序:驅(qū)動(dòng)是使內(nèi)核能夠與硬件或協(xié)議進(jìn)行通信或控制的程序纵柿,如果沒有驅(qū)動(dòng),內(nèi)核將無法與硬件進(jìn)行控制或通信启绰,因?yàn)閷?shí)際上內(nèi)核將指令發(fā)送給BIOS昂儒,然后BIOS將指令發(fā)送給硬件。
內(nèi)存管理:Linux的內(nèi)存管理通常用于動(dòng)態(tài)的物理內(nèi)存的管理委可,隔離的用戶地址空間管理渊跋,內(nèi)存的分配和回收腊嗡。
進(jìn)程管理:負(fù)責(zé)管理CPU資源,以便讓各個(gè)進(jìn)程可以盡量公平的方式訪問CPU拾酝。
安全管理:內(nèi)核是Linux的核心燕少,如果有惡意的代碼控制或者破壞了內(nèi)核的一部分,整個(gè)系統(tǒng)可能受到嚴(yán)重的破壞蒿囤,信息遭到竊取客们,所以需要安全管理模塊來提高內(nèi)核的安全性。
網(wǎng)絡(luò)功能:負(fù)責(zé)管理網(wǎng)絡(luò)的網(wǎng)絡(luò)設(shè)備嗎材诽,并實(shí)現(xiàn)多種多樣的網(wǎng)絡(luò)標(biāo)準(zhǔn)底挫。
文件系統(tǒng):文件系統(tǒng)是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件中的數(shù)據(jù)還有文件系統(tǒng)的結(jié)構(gòu)脸侥,所有Linux用戶和程序看到的文件建邓,目錄,軟鏈接睁枕、文件保護(hù)信息涝缝,設(shè)備文件都存儲其中。
2.常見Linux發(fā)行版的異同
Linux的發(fā)行版本譬重,從性質(zhì)上劃分拒逮,可以分成商業(yè)公司維護(hù)的商業(yè)版本和開源社區(qū)維護(hù)的免費(fèi)發(fā)行版本。商業(yè)版本以Redhat為代表臀规,開源社區(qū)版則以ubantu滩援,debian為代表。
ubantu:有很漂亮的用戶界面塔嬉,完善的包管理系統(tǒng)玩徊,強(qiáng)大的軟件源支持吟榴,ubantu還對大多數(shù)硬件有良好的兼容性赞辩,包括圖形顯卡,向著大眾化方向發(fā)展雕薪。ubantu的應(yīng)用很多胶哲,最佳的應(yīng)用領(lǐng)域是桌面操作系統(tǒng)而不是服務(wù)器操作系統(tǒng)畔塔。
centos:centos是從RHEL源代碼編譯的社區(qū)重新發(fā)布版。命令行下人性化很好鸯屿,有強(qiáng)大的英文文檔與開發(fā)社區(qū)的支持澈吨,去除了很多與服務(wù)器功能無關(guān)的應(yīng)用,系統(tǒng)簡單但是非常穩(wěn)定寄摆,命令行操作可以方便管理系統(tǒng)和應(yīng)用谅辣,并且有幫助文檔。
Debian:Debian和ubantu相比穩(wěn)定的多婶恼,只要應(yīng)用層面不出現(xiàn)邏輯缺陷桑阶,基本沒有問題柏副,debian整個(gè)系統(tǒng)的基礎(chǔ)和核心非常小,不僅穩(wěn)定而且占用磁盤空間小蚣录,占用內(nèi)存小割择,但是幫助文檔相對于centos略少,技術(shù)資料也少一些包归。
3.CPU架構(gòu)
CPU
主要?jiǎng)澐殖扇齻€(gè)模塊锨推,分別是控制單元、運(yùn)算單元和存儲單元公壤,這三部分由CPU總線連接起來换可。
控制單元:整個(gè)CPU的指揮控制核心,由指令寄存器IR厦幅、指令譯碼器ID和操作控制器OC等沾鳄,對協(xié)調(diào)整個(gè)電腦有序工作起氣味重要的作用,首先從存儲器中取出各條指令确憨,放在指令寄存器IR中译荞,通過指令譯碼分析應(yīng)該選擇進(jìn)行什么操作,然后通過指令操作器OC休弃,按確定的時(shí)序吞歼,向相應(yīng)的部件發(fā)出操作控制信號。
運(yùn)算單元:是運(yùn)算器的核心塔猾「萋猓可以執(zhí)行算數(shù)運(yùn)算和邏輯運(yùn)算。相對于控制單元而言丈甸,運(yùn)算器接受控制單元的命令而進(jìn)行操作糯俗,即運(yùn)算單元進(jìn)行的全部操作都是控制單元發(fā)出的控制信號來指揮的,所以是執(zhí)行部件睦擂。
存儲單元:包括CPU內(nèi)緩存和寄存器組得湘,是CPU暫時(shí)存放數(shù)據(jù)的地方,里面保存著那些等待處理的數(shù)據(jù)顿仇,或者已經(jīng)處理過的數(shù)據(jù)淘正,CPU訪問寄存器的時(shí)間比訪問內(nèi)存的時(shí)間短。采用寄存器夺欲,可以減少CPU訪問內(nèi)存的次數(shù)跪帝,從而提高了CPU的工作速度。但因?yàn)槭艿叫酒娣e和集成度所限些阅,寄存器組容量不可能很大,寄存器組可以分成專用寄存器和通用寄存器斑唬。專用寄存器的作用是固定的市埋,分別寄存相應(yīng)的數(shù)據(jù)黎泣。而通用寄存器用途廣泛并可以由程序員規(guī)定用途。
4.常見的開源協(xié)議
??? BSD開源協(xié)議:BSD開源協(xié)議是一個(gè)給予使用者很大自由的協(xié)議缤谎。開發(fā)者可以自由使用和修改源代碼抒倚,也可以將修改后的源代碼作為開源或者專有軟件再發(fā)布。但是有以下幾個(gè)要求:
??????? 如果再發(fā)布的產(chǎn)品中含有源代碼坷澡,則再源代碼中必須帶有原來代碼中的BSD協(xié)議托呕。
??????? 如果在發(fā)布的知識二進(jìn)制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)申明中包含原有代碼中的BSD協(xié)議频敛。
??????? 不可以再用開源代碼的作者/機(jī)構(gòu)名字和原來產(chǎn)品的名字做市場推廣项郊。
??? Apache2.0:Apache license是開源組織Apache采用的協(xié)議。與BSD類似斟赚,需要遵循以下條件:
??????? 需要給代碼的用戶一份Apache license着降。
??????? 如果修改了代碼,需要在被修改的文件中說明拗军。
??????? 在衍生的代碼中需要帶有原來代碼中的協(xié)議任洞,商標(biāo),專利聲明和其他原來作者規(guī)定需要包含的說明发侵。
??????? 如果再發(fā)布的產(chǎn)品中包含一個(gè)Notice文件交掏,則再Notice文件中需要帶由Apache license∪婿可以在Notice中增加自己的許可盅弛,但是不可以表現(xiàn)為對APache license構(gòu)成修改。
?????? 使用這個(gè)協(xié)議的好處是:
?????? 永久權(quán)利一旦被授權(quán)铲汪,永久擁有熊尉。
?????? 全球范圍的權(quán)利 在一個(gè)國家獲得授權(quán),適用于所有國家掌腰。假如你在美國狰住,許可是從印度授權(quán)的,也沒有問題齿梁。
?????? 授權(quán)免費(fèi) 無版稅催植, 前期、后期均無任何費(fèi)用勺择。
?????? 授權(quán)無排他性 任何人都可以獲得授權(quán)创南。
?????? 授權(quán)不可撤消 一旦獲得授權(quán),沒有任何人可以取消省核。比如稿辙,你基于該產(chǎn)品代碼開發(fā)了衍生產(chǎn)品,你不用擔(dān)心會在某一天被禁止使用該代碼气忠。
??? GPL:GPL協(xié)議的主要內(nèi)容是只要在一個(gè)軟件中類庫引用邻储,修改后的代碼或者衍生代碼的GPL協(xié)議的產(chǎn)品赋咽,則該軟件產(chǎn)品也必須采用GPL協(xié)議,必須開源和免費(fèi)吨娜。
??? LGPL:是GPL的一個(gè)為主要為類庫使用設(shè)計(jì)的開源協(xié)議脓匿。LGPL允許商業(yè)軟件用過類庫引用方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。著使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售宦赠。但是如果修改LGPL協(xié)議的代碼或者衍生陪毡,則所有修改的代碼,涉及修改部分的額外代碼和衍生代碼都必須采用LGPL協(xié)議勾扭。因此LGPL協(xié)議的開源代碼適合作為第三方類庫 被商業(yè)軟件引用毡琉,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的軟件引用尺借。
??? GPL和LGPL都是保障原作者的知識產(chǎn)權(quán)绊起,避免有人利用開源代碼復(fù)制并開發(fā)類似的產(chǎn)品。
5.人機(jī)交互SHELL燎斩、GUI和CLI
Linux本質(zhì)上是一個(gè)內(nèi)核虱歪,這個(gè)內(nèi)核可以用來做很多的事情,整個(gè)電腦都?xì)w內(nèi)核來管理栅表。顯卡笋鄙、聲卡、內(nèi)存怪瓶、硬盤萧落、以及硬盤上的各種程序也是歸內(nèi)核調(diào)度。但是內(nèi)核讓硬件和軟件做什么洗贰,內(nèi)核本身是不知道的找岖,需要接受人類用戶給它下指令,中間作為人機(jī)交互的橋梁的軟件就是shell敛滋。在人和操作系統(tǒng)之間傳達(dá)信息许布。
GUI(圖形化用戶界面)
???????????Graphical user interface(圖形化用戶接口)
??????????? 用圖形的方式,來顯示計(jì)算機(jī)操作的界面绎晃,這樣方便更直觀蜜唾。
CLI
??????????? Commandline User Interface(命令行用戶接口)
??????????? 最常見的DOS命令操作。
6.Xshell遠(yuǎn)程終端連接服務(wù)器
Xshell
可以實(shí)現(xiàn)在windows界面下來訪問遠(yuǎn)程終端不同系統(tǒng)下的服務(wù)器庶艾,從而比較好的達(dá)到遠(yuǎn)程控制終端的目的袁余。
7.Linux終端介紹
Linux
終端分為偽終端、虛擬終端咱揍、物理終端颖榜、圖形終端、串行終端。
虛擬終端:虛擬終端就是那些沒有圖形界面朱转,像DOS那樣的命令行蟹地。虛擬終端就是把一臺全功能的電腦通過軟件模擬成另外一臺計(jì)算機(jī)的終端設(shè)備积暖。
??? 偽終端:圖形界面下的命令行窗口藤为,叫做偽終端。但是這個(gè)偽終端是脫離圖形界面的夺刑、按ALT+ctrl+F1~F6組合鍵出來的那個(gè)終端而說的缅疟。偽終端的工作方式就是在左面上申請一個(gè)窗口,然后在里面模擬顯示出一個(gè)黑漆漆的界面遍愿。比如GNOME終端存淫、Konsole終端、xterm終端沼填、urxvt終端等桅咆。
??? 物理終端:直接連接在主機(jī)上的顯示器、鍵盤鼠標(biāo)統(tǒng)稱坞笙。在實(shí)際機(jī)架式服務(wù)器部署中岩饼,一般是多臺服務(wù)器共享一套終端,簡稱KVM(keyboard鍵盤薛夜,video顯示器籍茧,mouse鼠標(biāo))。
??? 圖形終端:快捷鍵Ctrl+alt+F7梯澜,相當(dāng)于在圖形化界面桌面打開終端寞冯,是一個(gè)虛擬終端。
??? 串行終端:串口輸出晚伙,與機(jī)器的串口對應(yīng)吮龄,每一個(gè)串口對應(yīng)一個(gè)串行終端,串口對應(yīng)的是物理終端咆疗。
8.命令提示符在centos7中漓帚,命令提示符如:[root@nodel~]#COMMAND
root:當(dāng)前用戶
nodel:當(dāng)前的主機(jī)名
~:當(dāng)前所在目錄,稱為工作目錄(working directory)
#:命令提示符民傻,為root胰默,擁有最高權(quán)限,能執(zhí)行所有操作
$:普通用戶漓踢,非root用戶牵署,不具有管理權(quán)限,不能執(zhí)行所有操作注意:正常使用非管理員登錄執(zhí)行管理員操作操作切換至管理員喧半,操作完成即返回奴迅。
9.Linux哲學(xué)思想
1)一切皆文件:
?????? 把幾乎一切資源統(tǒng)統(tǒng)抽象成文件形式;包括硬件設(shè)備,甚至是通信接口等取具。由眾多功能單一的程序組成:
2)一個(gè)程序只做一件事脖隶,并且做好;
?????? 組成小程序完成復(fù)雜任務(wù)暇检。
3)盡量避免與用戶交互:
?????? 易于以編程的方式實(shí)現(xiàn)自動(dòng)化業(yè)務(wù)产阱。
4)使用文本文件保存配置信息。
10.Linux文件系統(tǒng)文件路徑表示
文件系統(tǒng)是層級結(jié)構(gòu)块仆,成倒置樹狀結(jié)構(gòu)呈現(xiàn)构蹬,例:/dev/pts/2,其中最左側(cè)的/表示根目錄悔据,其他的/表示路徑分隔符庄敛。
文件系統(tǒng)文件的路徑表示一般有兩種:
?????? 一種是文件的絕對路徑:從根目錄開始的文件路徑;
?????? 還有一種是文件的相對路徑:從當(dāng)前位置開始表示的路徑科汗。
11.命令的通用語法格式:$ COMMAND OPTIONS ARGUMENTS
其中OPTIONS是指定命令的運(yùn)行特性選項(xiàng)一般有兩種表現(xiàn)形式:
短選項(xiàng):-c 注意:如果同一命令使用多個(gè)短選項(xiàng)可合并顯示
長選項(xiàng): --word,--help 注意:有些選項(xiàng)可以攜帶參數(shù)藻烤,此項(xiàng)稱為選項(xiàng)參數(shù)
12.man手冊是Linux的幫助文檔,存放于/usr/share/man头滔,其中分為8個(gè)章節(jié)怖亭,依次分別是:用戶命令、系統(tǒng)調(diào)用拙毫、c庫調(diào)用依许、設(shè)備文件及特殊文件、文件格式(配置文件)缀蹄、游戲玩法峭跳、雜項(xiàng)、管理工具及守護(hù)運(yùn)行缺前。
13.常用命令的用法
pwd:printing working directory(顯示工作目錄)
cd:change directory
cd [/PATH/TO/DIRECTORY]
cd :切換回家目錄注意:bash中蛀醉,~代表家目錄
cd ~:切換回自己的家目錄
cd ~USERNAME:切換為指定用戶的家目錄
cd -:在上一次的所在目錄與當(dāng)前目錄來回切換
$PWD:當(dāng)前工作目錄
$OLDPWD:上次工作目錄
??????? ls:list,列出指定目錄下的文件
???????????????????ls [OPTION]...[FILE]...
???????????????????????-a:顯示所有的文件衅码,包括隱藏文件
???????????????????????-A:顯示除.和..在內(nèi)的所有文件
???????????????????????-l: --long拯刁,長格式列表,即顯示文件的詳細(xì)屬性信息
???????????????????????-h: --human-readable:對文件大小單位換算逝段,換算后的結(jié)果可能是非精確值
???????????????????????-d:查看目錄本身垛玻,而非目錄內(nèi)部的文件列表
???????????????????????-r:reverse,逆序顯示
???????????????????????-R:recursive:遞歸顯示
???????cat:concatenate
???????????????????文件和文本的查看工具
??????????????????????????? cat[OPTION]...[FILE]...
??????????????????????????????????? -n:給顯示的文本行編號
??????????????????????????????????? -E:顯示行結(jié)束符$
??????? file:查看文件內(nèi)容屬性
???????????????????file [file]...
??????? echo:回顯命令
???????????????????-n:不自動(dòng)進(jìn)行換行操作
???????????????????-e:讓轉(zhuǎn)義符生效
??????? 關(guān)機(jī)式重啟命令:
???????????????????? shutdown
??????????????????????????? shutdown[OPTIONS..] [TIME] [WALL...]
??????????????????????????????????? OPTIONS:
???????????????????????????????????????????????????????????????????-h:halt
????? ??????????????????????????????????????????????????????????????-r:reboot
???????????????????????????????????????????????????????????????????-c:cancel
??????????????????????????????????? TIME:
???????????????????????????????????????????????????????????????????now
???????????????????????????????????????????????????????????????????hh:mm
???????????????????????????????????????????????????????????????????+m
??????? 日期相關(guān)的命令:date、clock奶躯、hwclock帚桩、cal
??????????????????????????????? date[OPTIONS]...+[FORMAT]
???? ???????????????????????????clock和hwclock中選項(xiàng)
???????????????????????????????????????????????????????????????????????????????????-s --hctosys
???????????????????????????????????????????????????????????????????????????????????-w --systohc
??? 以上是Linux的第一周學(xué)習(xí)內(nèi)容,開始對Linux系統(tǒng)的整個(gè)框架有了一個(gè)大概的理解嘹黔,以及其命令行的結(jié)構(gòu)账嚎,使用方法,基礎(chǔ)命令有了初步的認(rèn)識,也將這些在虛擬機(jī)上實(shí)際操作了幾回郭蕉,感覺很有趣疼邀,希望自己能夠堅(jiān)持下去,將Linux系統(tǒng)能夠運(yùn)用的更加流暢召锈,并在以后的工作中能游刃有余的處理相關(guān)問題旁振。