python day 105
目錄
## 一. Linux歷史
1、Liunx介紹
1.1 操作系統(tǒng)是什么
1.2 Liunx系統(tǒng)是什么,有什么特點(diǎn)
1.3 Liunx和UNIX的關(guān)系和區(qū)別
UNIX 的坎坷歷史
Linux 的那些往事
UNIX與Linux的親密關(guān)系
UNIX/Linux系統(tǒng)結(jié)構(gòu)
1.4 Liunx系統(tǒng)的優(yōu)缺點(diǎn)
1) 大量的可用軟件及免費(fèi)軟件
2) 良好的可移植性及靈活注
3) 優(yōu)良的穩(wěn)定性和安全性
4) 支持幾乎所有的網(wǎng)絡(luò)協(xié)議及開發(fā)語言
1.5 常見的Linux系統(tǒng)
1.RHEL紅帽
2.CentOS 社區(qū)企業(yè)操作系統(tǒng)(Community Enterprise Operating System,Centos)
3.Fedora
4.OpenSUSE
5.Gentoo
6.Debian
7.Ubuntu
1.6 開源軟件是什么,有哪些
1.7 開源協(xié)議是什么,有哪些
1) GNU GPL(GNU General Public License,GNU通用公共許可證)
2) BSD(Berkeley Software Distribution,伯克利軟件發(fā)布版)協(xié)議
3) Apache 許可證版本(Apache License Version)協(xié)議
4) MIT(Massachusetts Institute of Technology)協(xié)議
如何選擇開源協(xié)議
## 二. 虛擬軟件安裝
## 三. centos 7.6安裝
## 四. xshell安裝和連接
## 五. bash shell 介紹和使用
### 1 什么是Bash shell(殼)
### 2 能干什么
### 3 平時我們?nèi)绾问褂肧hell呢?
### 4 ?shell提示符
### 5 Shell基礎(chǔ)語法
### 6 命令補(bǔ)全
### 7 命令快捷鍵
### 8 history
## 一. Linux歷史
1、Liunx介紹
1.1 操作系統(tǒng)是什么
Linux 也是眾多操作系統(tǒng)之一,要想知道 Linux 是什么,首先得說一說什么是操作系統(tǒng)。
計算機(jī)是一臺機(jī)器,它按照用戶的要求接收信息、存儲數(shù)據(jù)、處理數(shù)據(jù),然后再將處理結(jié)果輸出(文字、圖片、音頻、視頻等)。計算機(jī)由硬件和軟件組成:
-
硬件是計算機(jī)賴以工作的實(shí)體,包括顯示器、鍵盤、鼠標(biāo)、硬盤、CPU、主板等;
-
軟件會按照用戶的要求協(xié)調(diào)整臺計算機(jī)的工作,比如 Windows、Linux、Mac OS、Android?等操作系統(tǒng),以及 Office、QQ、迅雷、微信等應(yīng)用程序。
操作系統(tǒng)(Operating System,OS)是軟件的一部分,它是硬件基礎(chǔ)上的第一層軟件,是硬件和其它軟件溝通的橋梁(或者說接口、中間人、中介等)。
操作系統(tǒng)會控制其他程序運(yùn)行,管理系統(tǒng)資源,提供最基本的計算功能,如管理及配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序等,同時還提供一些基本的服務(wù)程序,例如:
1) 文件系統(tǒng)
提供計算機(jī)存儲信息的結(jié)構(gòu),信息存儲在文件中,文件主要存儲在計算機(jī)的內(nèi)部硬盤里,在目錄的分層結(jié)構(gòu)中組織文件。文件系統(tǒng)為操作系統(tǒng)提供了組織管理數(shù)據(jù)的方式。
2) 設(shè)備驅(qū)動程序
提供連接計算機(jī)的每個硬件設(shè)備的接口,設(shè)備驅(qū)動器使程序能夠?qū)懭朐O(shè)備,而不需要了解執(zhí)行每個硬件的細(xì)節(jié)。簡單來說,就是讓你能吃到雞蛋,但不用養(yǎng)一只雞。
3) 用戶接口
操作系統(tǒng)需要為用戶提供一種運(yùn)行程序和訪問文件系統(tǒng)的方法。如常用的 Windows 圖形界面,可以理解為一種用戶與操作系統(tǒng)交互的方式;智能手機(jī)的 Android 或 iOS 系統(tǒng),也是一種操作系統(tǒng)的交互方式。
4) 系統(tǒng)服務(wù)程序
當(dāng)計算機(jī)啟動時,會自啟動許多系統(tǒng)服務(wù)程序,執(zhí)行安裝文件系統(tǒng)、啟動網(wǎng)絡(luò)服務(wù)、運(yùn)行預(yù)定任務(wù)等操作。
打個比方,操作系統(tǒng)就好像是一個政府,其它軟件都會被它管控;操作系統(tǒng)在給其他軟件提供各種便利的同時,還會約束其他軟件不能為所欲為。
目前流行的服務(wù)器和 PC 端操作系統(tǒng)有 Linux、Windows、UNIX 等,手機(jī)操作系統(tǒng)有 Android、iOS、Windows Phone(簡稱 WP),嵌入式操作系統(tǒng)有 Windows CE、PalmOS、eCos、uClinux 等。
這套《Linux入門教程》主要講解 Linux 這種操作系統(tǒng)的應(yīng)用,并不想過多涉及操作系統(tǒng)的類型和功能等理論性的知識,本節(jié)的目的是讓讀者明白,操作系統(tǒng)也是軟件的一種,只不過它是位于硬件和應(yīng)用程序之間的底層的軟件,它除了會為應(yīng)用程序保駕護(hù)航,還會“殺死”不聽話的應(yīng)用程序,具有雙面性。
以上對操作系統(tǒng)的認(rèn)知雖然只是“皮毛”,但它足以讓我們學(xué)習(xí) Linux 了。
1.2 Liunx系統(tǒng)是什么,有什么特點(diǎn)
與大家熟知的 Windows 操作系統(tǒng)軟件一樣,Linux 也是一個操作系統(tǒng)軟件,其 logo 是一只企鵝(如圖 1 所示)。與 Windows 不同之處在于,Linux 是一套開放源代碼程序的、可以自由傳播的類 Unix 操作系統(tǒng)軟件。
Linux 在設(shè)計之初,就是基于 Intel x86 系列 CPU 架構(gòu)計算機(jī)的,它是一個基于 POSIX 的多用戶、多任務(wù)并且支持多線程和多 CPU 的操作系統(tǒng),它是由世界各地成千上萬的程序員設(shè)計和開發(fā)實(shí)現(xiàn)的,當(dāng)初開發(fā) Linux 系統(tǒng)的目的就是建立不受任何商業(yè)化軟件版權(quán)制約的、全世界都能自由使用的類 Unix 操作系統(tǒng)兼容產(chǎn)品。
在過去的 20 年里,Linux 系統(tǒng)主要被應(yīng)用于服務(wù)器端、嵌入式開發(fā)和 PC 桌面 3 大領(lǐng)域,其中服務(wù)器端領(lǐng)域是重中之重。例如,我們熟知的大型、超大型互聯(lián)網(wǎng)企業(yè)(百度、騰訊、Sina、阿里等)都在使用 Linux 系統(tǒng)作為其服務(wù)器端的程序運(yùn)行平臺,全球及國內(nèi)排名前 1000 的 90% 以上的網(wǎng)站使用的主流系統(tǒng)都是 Linux 系統(tǒng)。
從上面的內(nèi)容可以看出,Linux操作系統(tǒng)之所以如此流行,是因?yàn)樗邆淙缦逻@些優(yōu)秀的特點(diǎn):
-
Linux 不僅是免費(fèi)的,更是開源的,這意味著任何人都可以獲得其代碼并根據(jù)自己的需求進(jìn)行修改。事實(shí)上,這已經(jīng)孵化出專屬 Linux 各發(fā)行版的巨大生態(tài)系統(tǒng)。
-
Linux 與 Unix 系統(tǒng)兼容,該系統(tǒng)的構(gòu)建采用了一些與 UNIX 操作系統(tǒng)相同的技術(shù),具備 Unix 幾乎所有的優(yōu)秀特性(系統(tǒng)的穩(wěn)定性和安全性尤為突出)。
-
和其他操作系統(tǒng)相比,Linux 更容易安裝,且不會收到任何商業(yè)化版本的制約。
-
Linux 讓開展各種實(shí)際有用且具有創(chuàng)造性的事情成為可能。例如,我們可以在一個U盤上裝載 Linux 的自生系統(tǒng)引導(dǎo)映像(live boot image),啟動一臺硬盤已經(jīng)崩潰的計算機(jī),之后查找并解決該問題。或者,因?yàn)?Linux 是一個真正的多用戶操作系統(tǒng),它具有非常好的私密性和穩(wěn)定性,整個團(tuán)隊(duì)可以同時從本地或遠(yuǎn)程登錄進(jìn)行工作。
-
Linux 提供了復(fù)雜的軟件包管理系統(tǒng),可以放心地安裝和維護(hù)每一個在線資源庫中的軟件應(yīng)用。
當(dāng)然, Linux 操作系統(tǒng)的特點(diǎn)還有很多,這里不再過多贅述,相信隨著學(xué)習(xí) Linux 的深入,你會有更多的體會。
1.3 Liunx和UNIX的關(guān)系和區(qū)別
UNIX 與 Linux 之間的關(guān)系是一個很有意思的話題。在目前主流的服務(wù)器端操作系統(tǒng)中,UNIX 誕生于 20 世紀(jì) 60 年代末,Windows 誕生于 20 世紀(jì) 80 年代中期,Linux 誕生于 20 世紀(jì) 90 年代初,可以說 UNIX 是操作系統(tǒng)中的"老大哥",后來的 Windows 和 Linux 都參考了 UNIX。
UNIX 的坎坷歷史
UNIX 操作系統(tǒng)由肯湯普森(Ken Thompson)和丹尼斯里奇(Dennis Ritchie)發(fā)明。它的部分技術(shù)來源可追溯到從 1965 年開始的 Multics 工程計劃,該計劃由貝爾實(shí)驗(yàn)室、美國麻省理工學(xué)院和通用電氣公司聯(lián)合發(fā)起,目標(biāo)是開發(fā)一種交互式的、具有多道程序處理能力的分時操作系統(tǒng),以取代當(dāng)時廣泛使用的批處理操作系統(tǒng)。
說明:分時操作系統(tǒng)使一臺計算機(jī)可以同時為多個用戶服務(wù),連接計算機(jī)的終端用戶交互式發(fā)出命令,操作系統(tǒng)采用時間片輪轉(zhuǎn)的方式處理用戶的服務(wù)請求并在終端上顯示結(jié)果(操作系統(tǒng)將CPU的時間劃分成若干個片段,稱為時間片)。操作系統(tǒng)以時間片為單位,輪流為每個終端用戶服務(wù),每次服務(wù)一個時間片。
可惜,由于 Multics 工程計劃所追求的目標(biāo)太龐大、太復(fù)雜,以至于它的開發(fā)人員都不知道要做成什么樣子,最終以失敗收場。
以肯湯普森為首的貝爾實(shí)驗(yàn)室研究人員吸取了 Multics 工程計劃失敗的經(jīng)驗(yàn)教訓(xùn),于 1969 年實(shí)現(xiàn)了一種分時操作系統(tǒng)的雛形,1970 年該系統(tǒng)正式取名為 UNIX。
想一下英文中的前綴 Multi 和 Uni,就明白了 UNIX 的隱意。Multi 是大的意思,大而且繁;而 Uni 是小的意思,小而且巧。這是 UNIX 開發(fā)者的設(shè)計初衷,這個理念一直影響至今。
有意思的是,肯湯普森當(dāng)年開發(fā) UNIX 的初衷是運(yùn)行他編寫的一款計算機(jī)游戲 Space Travel,這款游戲模擬太陽系天體運(yùn)動,由玩家駕駛飛船,觀賞景色并嘗試在各種行星和月亮上登陸。他先后在多個系統(tǒng)上試驗(yàn),但運(yùn)行效果不甚理想,于是決定自己開發(fā)操作系統(tǒng),就這樣,UNIX 誕生了。
自 1970 年后,UNIX 系統(tǒng)在貝爾實(shí)驗(yàn)室內(nèi)部的程序員之間逐漸流行起來。1971-1972 年,肯湯普森的同事丹尼斯里奇發(fā)明了傳說中的C語言,這是一種適合編寫系統(tǒng)軟件的高級語言,它的誕生是 UNIX 系統(tǒng)發(fā)展過程中的一個重要里程碑,它宣告了在操作系統(tǒng)的開發(fā)中,匯編語言不再是主宰。
到了 1973 年,UNIX 系統(tǒng)的絕大部分源代碼都用C語言進(jìn)行了重寫,這為提高 UNIX 系統(tǒng)的可移植性打下了基礎(chǔ)(之前操作系統(tǒng)多采用匯編語言,對硬件依賴性強(qiáng)),也為提高系統(tǒng)軟件的開發(fā)效率創(chuàng)造了條件。可以說,UNIX 系統(tǒng)與C語言是一對孿生兄弟,具有密不可分的關(guān)系。
20 世紀(jì) 70 年代初,計算機(jī)界還有一項(xiàng)偉大的發(fā)明——TCP/IP 協(xié)議,這是當(dāng)年美國國防部接手 ARPAnet 后所開發(fā)的網(wǎng)絡(luò)協(xié)議。美國國防部把 TCP/IP 協(xié)議與 UNIX 系統(tǒng)、C語言捆綁在一起,由 AT&T 發(fā)行給美國各個大學(xué)非商業(yè)的許可證,這為 UNIX 系統(tǒng)、C語言、TCP/IP 協(xié)議的發(fā)展拉開了序幕,它們分別在操作系統(tǒng)、編程語言、網(wǎng)絡(luò)協(xié)議這三個領(lǐng)域影響至今。肯湯普森和丹尼斯里奇因在計算機(jī)領(lǐng)域做出的杰出貢獻(xiàn),于 1983 年獲得了計算機(jī)科學(xué)的最高獎——圖靈獎。
圖 為肯湯普森與丹尼斯里奇的合影,天才都是不修邊幅的……
隨后出現(xiàn)了各種版本的 UNIX 系統(tǒng),目前常見的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等。
Solaris 和 FreeBSD
我們重點(diǎn)介紹一下 Solaris,它是 UNIX 系統(tǒng)的一個重要分支。Solaris 除可以運(yùn)行在 SPARC CPU 平臺上外,還可以運(yùn)行在 x86 CPU 平臺上。在服務(wù)器市場上,Sun 的硬件平臺具有高可用性和高可靠性,是市場上處于支配地位的 UNIX 系統(tǒng)。
對于難以接觸到 Sun SPARC 架構(gòu)計算機(jī)的用戶來說,可以通過使用 Solaris x86 來體驗(yàn)世界知名大廠的商業(yè) UNIX 風(fēng)采。當(dāng)然,Solaris x86 也可以用于實(shí)際生產(chǎn)應(yīng)用的服務(wù)器,在遵守 Sun 的有關(guān)許可條款的情況下,Solaris x86 可以免費(fèi)用于學(xué)習(xí)研究或商業(yè)應(yīng)用。
FreeBSD 源于美國加利福尼亞大學(xué)伯克利分校開發(fā)的 UNIX 版本,它由來自世界各地的志愿者開發(fā)和維護(hù),為不同架構(gòu)的計算機(jī)系統(tǒng)提供了不同程度的支持。FreeBSD 在 BSD 許可協(xié)議下發(fā)布,允許任何人在保留版權(quán)和許可協(xié)議信息的前提下隨意使用和發(fā)行,并不限制將 FreeBSD 的代碼在另一協(xié)議下發(fā)行,因此商業(yè)公司可以自由地將 FreeBSD 代碼融入它們的產(chǎn)品中。蘋果公司的 OS X 就是基于 FreeBSD 的操作系統(tǒng)。
FreeBSD 與 Linux 的用戶群有相當(dāng)一部分是重合的,二者支持的硬件環(huán)境也比較一致,所采用的軟件也比較類似。FreeBSD 的最大特點(diǎn)就是穩(wěn)定和高效,是作為服務(wù)器操作系統(tǒng)的不錯選擇;但其對硬件的支持沒有 Linux 完備,所以并不適合作為桌面系統(tǒng)。
其他 UNIX 版本因應(yīng)用范圍相對有限,在此不做過多介紹。
Linux 的那些往事
Linux 內(nèi)核最初是由李納斯托瓦茲(Linus Torvalds)在赫爾辛基大學(xué)讀書時出于個人愛好而編寫的,當(dāng)時他覺得教學(xué)用的迷你版 UNIX 操作系統(tǒng) Minix 太難用了,于是決定自己開發(fā)一個操作系統(tǒng)。第 1 版本于 1991 年 9 月發(fā)布,當(dāng)時僅有 10000 行代碼。
李納斯托瓦茲沒有保留 Linux 源代碼的版權(quán),公開了代碼,并邀請他人一起完善 Linux。與 Windows 及其他有專利權(quán)的操作系統(tǒng)不同,Linux 開放源代碼,任何人都可以免費(fèi)使用它。
據(jù)估計,現(xiàn)在只有 2% 的 Linux 核心代碼是由李納斯托瓦茲自己編寫的,雖然他仍然擁有 Linux 內(nèi)核(操作系統(tǒng)的核心部分),并且保留了選擇新代碼和需要合并的新方法的最終裁定權(quán)。現(xiàn)在大家所使用的 Linux,我更傾向于說是由李納斯托瓦茲和后來陸續(xù)加入的眾多 Linux 好者共同開發(fā)完成的。
李納斯托瓦茲無疑是這個世界上最偉大的程序員之一,何況,他還搞出了全世界最大的程序員交友社區(qū)?GitHub?(開源代碼庫及版本控制系統(tǒng))。
關(guān)于 Linux Logo 的由來是一個很有意思的話題,它是一只企鵝。
為什么選擇企鵝,而不是選擇獅子、老虎或者小白兔?有人說因?yàn)槔罴{斯托瓦茲是芬蘭人,所以選擇企鵝,有人說因?yàn)槠渌麆游飯D案都被用光了,李納斯托瓦茲只好選擇企鵝。
我更愿意相信以下說法,企鵝是南極洲的標(biāo)志性動物,根據(jù)國際公約,南極洲為全人類共同所有,不屬于世界上的任何國家,可國家都無權(quán)將南極洲納入其版圖。Linux 選擇企鵝圖案作為 Logo,其含義是:開放源代碼的 Linux 為全人類共同所有,可公司無權(quán)將其私有。
UNIX與Linux的親密關(guān)系
二者的關(guān)系,不是大哥和小弟,"UNIX 是 Linux 的父親"這個說法更怡當(dāng)。之所以要介紹它們的關(guān)系,是因?yàn)橐嬖V讀者,在學(xué)習(xí)的時候,其實(shí) Linux 與 UNIX 有很多的共通之處,簡單地說,如果你已經(jīng)熟練掌握了 Linux,那么再上手使用 UNIX 會非常容易。
二者也有兩個大的區(qū)別:
UNIX 系統(tǒng)大多是與硬件配套的,也就是說,大多數(shù) UNIX 系統(tǒng)如 AIX、HP-UX 等是無法安裝在 x86 服務(wù)器和個人計算機(jī)上的,而 Linux 則可以運(yùn)行在多種硬件平臺上;
UNIX 是商業(yè)軟件,而 Linux 是開源軟件,是免費(fèi)、公開源代碼的。
Linux 受至?xí)绱笥嬎銠C(jī)愛好者的喜愛,主要原因也有兩個:
它屬于開源軟件,用戶不用支付可費(fèi)用就可以獲得它和它的源代碼,并且可以根據(jù)自己的需要對它進(jìn)行必要的修改,無償使用,無約束地繼續(xù)傳播;
它具有 UNIX 的全部功能,任何使用 UNIX 操作系統(tǒng)或想要學(xué)習(xí) UNIX 操作系統(tǒng)的人都可以從 Linux 中獲益。
開源軟件是不同于商業(yè)軟件的一種模式,從字面上理解,就是開放源代碼,大家不用擔(dān)心里面會搞什么貓膩,這會帶來軟件的革新和安全。
另外,開源其實(shí)并不等同于免費(fèi),而是一種新的軟件盈利模式。目前很多軟件都是開源軟件,對計算機(jī)行業(yè)與互聯(lián)網(wǎng)影響深遠(yuǎn)。
近年來,Linux 已經(jīng)青出于藍(lán)而勝于藍(lán),以超常的速度發(fā)展,從一個丑小鴨變成了一個擁有龐大用戶群的真正優(yōu)秀的、值得信賴的操作系統(tǒng)。歷史的車輪讓 Linux 成為 UNIX 最優(yōu)秀的傳承者。
總結(jié)一下 Linux 和 UNIX 的關(guān)系/區(qū)別
Linux 是一個類似 Unix 的操作系統(tǒng),Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用戶體驗(yàn)上進(jìn)行優(yōu)化,所以 Linux 模仿了 UNIX(但并沒有抄襲 UNIX 的源碼),使得 Linux 在外觀和交互上與 UNIX 非常類似。
相比于 UNIX,Linux 最大的創(chuàng)新是開源免費(fèi),這是它能夠蓬勃發(fā)展的最重要原因;而目前的 UNIX 大部分都是收費(fèi)的,小公司和個人都難以承受。
正是由于 Linux 和 UNIX 有著千絲萬縷的聯(lián)系,所以人們把 Linux 叫做“類UNIX系統(tǒng)”,下節(jié)我們將會著重講解。
UNIX/Linux系統(tǒng)結(jié)構(gòu)
UNIX/Linux 系統(tǒng)可以粗糙地抽象為 3 個層次(所謂粗糙,就是不夠細(xì)致、精準(zhǔn),但是便于初學(xué)者抓住重點(diǎn)理解),如圖 3 所示。底層是 UNIX/Linux 操作系統(tǒng),即系統(tǒng)內(nèi)核(Kernel);中間層是 Shell 層,即命令解釋層;高層則是應(yīng)用層。
圖 3 UNIX/Linux 系統(tǒng)結(jié)掏層次概要
1) 內(nèi)核層
內(nèi)核層是 UNIX/Linux 系統(tǒng)的核心和基礎(chǔ),它直接附著在硬件平臺之上,控制和管理系統(tǒng)內(nèi)各種資源(硬件資源和軟件資源),有效地組織進(jìn)程的運(yùn)行,從而擴(kuò)展硬件的功能,提高資源的利用效率,為用戶提供方便、高效、安全、可靠的應(yīng)用環(huán)境。
2) Shell層
Shell 層是與用戶直接交互的界面。用戶可以在提示符下輸入命令行,由 Shell 解釋執(zhí)行并輸出相應(yīng)結(jié)果或者有關(guān)信息,所以我們也把 Shell 稱作命令解釋器,利用系統(tǒng)提供的豐富命令可以快捷而簡便地完成許多工作。
3) 應(yīng)用層
應(yīng)用層提供基于 X Window 協(xié)議的圖形環(huán)境。X Window 協(xié)議定義了一個系統(tǒng)所必須具備的功能(就如同 TCP/IP 是一個協(xié)議,定義軟件所應(yīng)具備的功能),可系統(tǒng)能滿足此協(xié)議及符合 X 協(xié)會其他的規(guī)范,便可稱為 X Window。
現(xiàn)在大多數(shù)的 UNIX 系統(tǒng)上(包括 Solaris、HP-UX、AIX 等)都可以運(yùn)行 CDE (Common Desktop Environment,通用桌面環(huán)境,是運(yùn)行于 UNIX 的商業(yè)桌面環(huán)境)的用戶界面;而在 Linux 上廣泛應(yīng)用的有 Gnome(見圖 4)、KDE 等。
圖 4 Gnome圖形界面
X Window 與微軟的 Windows 圖形環(huán)境有很大的區(qū)別:
-
UNIX/Linux 系統(tǒng)與 X Window 沒有必然捆綁的關(guān)系,也就是說,UNIX/Linux 可以安裝 X Window,也可以不安裝;而微軟的 Windows 圖形環(huán)境與內(nèi)核捆綁密切。
-
UNIX/Linux 系統(tǒng)不依賴圖形環(huán)境,依然可以通過命令行完成 100% 的功能,而且因?yàn)椴皇褂脠D形環(huán)境還會節(jié)省大量的系統(tǒng)資源。
作為服務(wù)器部署,絕大多數(shù) Linux 并不安裝或并不啟用圖形環(huán)境
1.4 Liunx系統(tǒng)的優(yōu)缺點(diǎn)
前面章節(jié)提到,相比 Windows 系統(tǒng),Linux 系統(tǒng)有更好的穩(wěn)定性,那么除此之外,Linux 系統(tǒng)還有那些優(yōu)點(diǎn)(或者不足)呢?本節(jié)帶領(lǐng)大家詳細(xì)了解一下。
1) 大量的可用軟件及免費(fèi)軟件
Linux 系統(tǒng)上有著大量的可用軟件,且絕大多數(shù)是免費(fèi)的,比如聲名赫赫的 Apache、Samba、PHP、MySQL?等,構(gòu)建成本低廉,是 Linux 被眾多企業(yè)青睞的原因之一。當(dāng)然,這和 Linux 出色的性能是分不開的,否則,節(jié)約成本就沒有任何意義。
但不可否認(rèn)的是,Linux 在辦公應(yīng)用和游戲娛樂方面的軟件相比 Windows 系統(tǒng)還很匱乏,所以,即便打游戲、看影片用的也是 Windows,至于 Linux,就把它用在擅長的服務(wù)器領(lǐng)域吧。
2) 良好的可移植性及靈活注
Linux 系統(tǒng)有良好的可移植性,它幾乎支持所有的 CPU 平臺,這使得它便于裁剪和定制。我們可以把 Linux 放在 U 盤、光盤等存儲介質(zhì)中,也可以在嵌入式領(lǐng)域廣泛應(yīng)用。
如果讀者希望不進(jìn)行安裝就體驗(yàn) Linux 系統(tǒng),則可以在網(wǎng)上下載一個 Live DVD 版的 Linux 鏡像,刻成光盤放入光驅(qū)或者用虛擬機(jī)軟件直接載入鏡像文件,設(shè)置 CMOS/BIOS 為光盤啟動,系統(tǒng)就會自動載入光盤文件,啟動進(jìn)入 Linux 系統(tǒng)。
3) 優(yōu)良的穩(wěn)定性和安全性
著名的黑客埃里克雷蒙德(EricS.Raymond)有一句名言:“足夠多的眼睛,就可讓所有問題浮現(xiàn)”。舉個例子,假如筆者在演講,臺下人山人海,明哥中午吃飯不小心,有幾個飯粒粘在衣領(lǐng)上了,分分鐘就會被大家發(fā)現(xiàn),因?yàn)榭吹娜颂嗔?#xff1b;如果臺下就稀稀落落兩三個人且離得很遠(yuǎn),那就算明哥衣領(lǐng)上有一大塊油漬也不會被發(fā)現(xiàn)。
Linux 開放源代碼,將所有代碼放在網(wǎng)上,全世界的程序員都看得到,有什么缺陷和漏洞,很快就會被發(fā)現(xiàn),從而成就了它的穩(wěn)定性和安全注。
提到 Linux 的安全性,我們可以做一個實(shí)驗(yàn):在一臺計算機(jī)上,在安裝了 Windows 系統(tǒng)后不安裝殺毒軟件聯(lián)網(wǎng)一個月,看看會有什么情況;同樣,在安裝了 Linux 系統(tǒng)后不安裝殺毒軟件聯(lián)網(wǎng)一個月,我們比較一下,大家就明白了什么是 Linux 的安全性。Windows 系統(tǒng)不安裝殺毒軟件,相信大家都知道會有什么下場吧……
4) 支持幾乎所有的網(wǎng)絡(luò)協(xié)議及開發(fā)語言
Linux 是不是對 TCP/IP 協(xié)議支持不好、是不是?Java?開發(fā)環(huán)境不靈之類的問題。前面在 UNIX 發(fā)展史中已經(jīng)介紹了,UNIX 系統(tǒng)是與 C 語言、TCP/IP 協(xié)議一同發(fā)展起來的,而 Linux 是 UNIX 的一種,C 語言又衍生出了現(xiàn)今主流的語言 PHP、Java、C++?等,而哪一個網(wǎng)絡(luò)協(xié)議與 TCP/IP 無關(guān)呢?所以,Linux 對網(wǎng)絡(luò)協(xié)議和開發(fā)語言的支持很好。
1.5 常見的Linux系統(tǒng)
在介紹常見的Linux系統(tǒng)版本之前,首先需要區(qū)分Linux系統(tǒng)內(nèi)核與Linux發(fā)行套件系統(tǒng)的不同。Linux系統(tǒng)內(nèi)核指的是一個由Linus Torvalds負(fù)責(zé)維護(hù),設(shè)備驅(qū)動、文件系統(tǒng)、進(jìn)程管理、網(wǎng)絡(luò)通信等功能的系統(tǒng)軟件,內(nèi)核并不是一套完整的操作系統(tǒng),它只是操作系統(tǒng)的核心。一些組織或廠商將 Linux 內(nèi)核與各種軟件和文檔包裝起來,并提供系統(tǒng)安裝界面和系統(tǒng)配置、設(shè)定與管理工具,就構(gòu)成了 Linux 的發(fā)行版本。
在 Linux 內(nèi)核的發(fā)展過程中,各種 Linux 發(fā)行版本起了巨大的作用,正是它們推動了 Linux 的應(yīng)用,從而讓更多的人開始關(guān)注 Linux。因此,把 Red Hat、Ubuntu、SUSE 等直接說成 Linux 其實(shí)是不確切的,它們是 Linux 的發(fā)行版本,更確切地說,應(yīng)該叫作“以Linux為核心的操作系統(tǒng)軟件包”。
Linux 的各個發(fā)行版本使用的是同一個 Linux 內(nèi)核,因此在內(nèi)核層不存在什么兼容性問題,每個版本有不一樣的感覺,只是在發(fā)行版本的最外層(由發(fā)行商整合開發(fā)的應(yīng)用)才有所體現(xiàn)。
Linux 的發(fā)行版本可以大體分為兩類:
-
商業(yè)公司維護(hù)的發(fā)行版本,以著名的 Red Hat 為代表;
-
社區(qū)組織維護(hù)的發(fā)行版本,以 Debian 為代表。
很難說大量 Linux 版本中哪一款更好,每個版本都有自己的特點(diǎn)。下面為大家介紹幾款常用的 Linux 發(fā)行版本。
1.RHEL紅帽
Redhat,應(yīng)該稱為Redhat系列,包括
(1)RHEL (Redhat Enterprise Linux,也就是所謂的Redhat Advance Server,收費(fèi)版本,穩(wěn)定性非常好,適合服務(wù)器使用)
(2)Fedora Core (由原來的Redhat桌面版本發(fā)展而來,免費(fèi)版本,穩(wěn)定性較差,最好只用于桌面應(yīng)用)
(3)CentOS (RHEL的社區(qū)克隆版本,免費(fèi)版本,穩(wěn)定性非常好,適合服務(wù)器使用)
Redhat是國內(nèi)使用人群最多的Linux版本,以至于有的人將Redhat等同于Linux,而有些老手更是只用這一個版本的Linux。所以有什么不明白的地方,很容易找到人來問,而且網(wǎng)上的Linux教程基本都是以Redhat為例來講解。Redhat系列的包管理方式采用的是基于RPM包和YUM包的管理方式,包分發(fā)方式是編譯好的二進(jìn)制文件。
2.CentOS 社區(qū)企業(yè)操作系統(tǒng)(Community Enterprise Operating System,Centos)
來自于Red Hat Enterprise Linux依照開放源代碼規(guī)定釋出的源代碼所編譯而成。由于出自同樣的源代碼,因此有些要求高度穩(wěn)定性的服務(wù)器以CentOS替代商業(yè)版的Red Hat Enterprise Linux使用。兩者的不同,在于CentOS并不包含封閉源代碼軟件。
CentOS 是RHEL源代碼再編譯的產(chǎn)物,而且在RHEL的基礎(chǔ)上修正了不少已知的 Bug ,相對于其他 Linux 發(fā)行版,其穩(wěn)定性值得信賴。
3.Fedora
用戶可免費(fèi)體驗(yàn)到最新的技術(shù)或工具,而功能成熟后會被加入到RHEL系統(tǒng)中。因此也被稱為RHEL系統(tǒng)的“試驗(yàn)田”,如果感興趣的話,可以多關(guān)注此類系統(tǒng)的發(fā)展變化及新特性。
由全球社區(qū)愛好者構(gòu)建的面向日常應(yīng)用的快速且強(qiáng)大的操作系統(tǒng)。它允許任何人自由地使用、修改和重發(fā)布,無論現(xiàn)在還是將來。它由一個強(qiáng)大的社群開發(fā),這個社群的成員以自己的不懈努力,提供并維護(hù)自由、開源代碼的軟件和開放的標(biāo)準(zhǔn)。Fedora 項(xiàng)目由 Fedora 基金會管理和控制,得到了Red Hat 的支持。Fedora (第七版以前為Fedora Core)是一款基于 Linux 的操作系統(tǒng),也是一組維持計算機(jī)正常運(yùn)行的軟件集合。其目標(biāo)是創(chuàng)建一套新穎、多功能并且自由和開源的操作系統(tǒng)。
4.OpenSUSE
德國著名的Linux系統(tǒng),全球范圍內(nèi)有著不錯的聲譽(yù)及市場占有率,發(fā)行量在歐洲占第一位。OpenSUSE對個人來說是完全免費(fèi)的,包括使用和在線更新。OpenSUSE被評價為最華麗的Linux桌面發(fā)行版,甚至超越win7,但它的優(yōu)勢絕不僅僅局限于win7還要絢麗的用戶交互界面,其性能也絕不亞于其他Linux桌面發(fā)行版!
5.Gentoo
具有極高的自定制性,操作復(fù)雜,因此適合有經(jīng)驗(yàn)的人員使用。
它能為幾乎任何應(yīng)用程序或需求自動地作出優(yōu)化和定制。追求極限的配置、性能,以及頂尖的用戶和開發(fā)者社區(qū),都是Gentoo體驗(yàn)的標(biāo)志特點(diǎn)。 Gentoo的哲學(xué)是自由和選擇。得益于一種稱為Portage的技術(shù),Gentoo能成為理想的安全服務(wù)器、開發(fā)工作站、專業(yè)桌面、游戲系統(tǒng)、嵌入式解決方案或者別的東西——你想讓它成為什么,它就可以成為什么。
6.Debian
應(yīng)該稱為Debian 系列,包括Debian和Ubuntu等。Debian是社區(qū)類Linux的典范,是迄今為止最遵循GNU規(guī)范的Linux系統(tǒng)。提供了接近十萬種不同的開源軟件支持,在國外用于很高的認(rèn)可度和使用率。對于各類內(nèi)核架構(gòu)支持性良好,穩(wěn)定性、安全性強(qiáng)更有免費(fèi)的技術(shù)支持。
Debian最具特色的是apt-get / dpkg包管理方式,其實(shí)Redhat的YUM也是在模仿Debian的APT方式,但在二進(jìn)制文件發(fā)行方式中,APT應(yīng)該是最好的了。Debian的資料也很豐富,有很多支持的社區(qū),有問題求教也有地方可去。
分為三個版本分支(branch):
(1)unstable,為最新的測試版本,其中包括最新的軟件包,但是也有相對較多的bug,適合桌面用戶。
(2)testing,經(jīng)過unstable中的測試,相對較為穩(wěn)定,也支持了不少新技術(shù)。
(3)stable,一般只用于服務(wù)器,上面的軟件包大部分都比較過時,但是穩(wěn)定和安全性都非常的高。
7.Ubuntu
Ubuntu是一款基于Debian派生的操作系統(tǒng)(嚴(yán)格來說不能算一個獨(dú)立的發(fā)行版本),對新款硬件具有極強(qiáng)的兼容能力。 特點(diǎn)是界面非常友好,容易上手,對硬件支持非常全面,是最適合做桌面系統(tǒng)的Linux發(fā)行版本,同時Ubuntu也可用于服務(wù)器領(lǐng)域。Ubuntu的目標(biāo)在于為一般用戶提供一個最新的,同時又相對穩(wěn)定的主要自由軟件構(gòu)建而成的操作系統(tǒng)。Ubuntu具有強(qiáng)大的社區(qū)力量,用戶可以方便地從社區(qū)獲取幫助。
1.6 開源軟件是什么,有哪些
Linux 是一款開源軟件,我們可以隨意瀏覽和修改它的源代碼,學(xué)習(xí) Linux,不得不談到開源精神。Linux 本身就是開源精神的受益者,它幾乎是全球最大的開源軟件。
簡單來說,開源軟件就是把軟件程序與源代碼文件一起打包提供給用戶,用戶既可以不受限制地使用該軟件的全部功能,也可以根據(jù)自己的需求修改源代碼,甚至編制成衍生產(chǎn)品再次發(fā)布出去。
用戶具有使用自由、修改自由、重新發(fā)布自由和創(chuàng)建衍生品自由,這正好符合了黑客和極客對自由的追求,因此開源軟件在國內(nèi)外都有著很高的人氣,大家聚集在開源社區(qū),共同推動開源軟件的進(jìn)步。
坦白來講,每一位投身 Linux 的技術(shù)人或者程序員,只要聽到開源項(xiàng)目就會由衷地感到自豪,這是一種從骨子里面帶有的獨(dú)特情況。
支持開源軟件的企業(yè)不單出是為了利益,而是相互扶持,共同努力服務(wù)好更多的用戶。
國內(nèi)外開源社區(qū)推薦:開源中國、ChinaUnix、GitHub、Apache、SourceForge、
開源社區(qū)以國外為主,國內(nèi)開源社區(qū)由于資金、人才、氣氛等問題一直不太穩(wěn)定,最后附上一張開源社區(qū)匯總圖。
1.7 開源協(xié)議是什么,有哪些
開源軟件在追求“自由”的同時,不能犧牲程序員的利益,否則將會影響程序員的創(chuàng)造激情,因此世界上現(xiàn)在有 60 多種被開源促進(jìn)組織(Open Source Initiative)認(rèn)可的開源許可協(xié)議來保證開源工作者的權(quán)益。
開源協(xié)議規(guī)定了你在使用開源軟件時的權(quán)利和責(zé)任,也就是規(guī)定了你可以做什么,不可以做什么。
開源協(xié)議雖然不一定具備法律效力,但是當(dāng)涉及軟件版權(quán)糾紛時,開源協(xié)議也是非常重要的證據(jù)之一。
對于準(zhǔn)備編寫一款開源軟件的開發(fā)人員,也非常建議先了解一下當(dāng)前最熱門的開源許可協(xié)議,選擇一個合適的開源許可協(xié)議來最大限度保護(hù)自己的軟件權(quán)益。
1) GNU GPL(GNU General Public License,GNU通用公共許可證)
只要軟件中包含了遵循 GPL 協(xié)議的產(chǎn)品或代碼,該軟件就必須也遵循 GPL 許可協(xié)議,也就是必須開源免費(fèi),不能閉源收費(fèi),因此這個協(xié)議并不適合商用軟件。
遵循 GPL 協(xié)議的開源軟件數(shù)量極其龐大,包括 Linux 系統(tǒng)在內(nèi)的大多數(shù)的開源軟件都是基于這個協(xié)議的。
2) BSD(Berkeley Software Distribution,伯克利軟件發(fā)布版)協(xié)議
BSD 協(xié)議基本上允許用戶“為所欲為”,用戶可以使用、修改和重新發(fā)布遵循該許可的軟件,并且可以將軟件作為商業(yè)軟件發(fā)布和銷售,前提是需要滿足下面三個條件:
-
如果再發(fā)布的軟件中包含源代碼,則源代碼必須繼續(xù)遵循 BSD 許可協(xié)議。
-
如果再發(fā)布的軟件中只有二進(jìn)制程序,則需要在相關(guān)文檔或版權(quán)文件中聲明原始代碼遵循了 BSD 協(xié)議。
-
不允許用原始軟件的名字、作者名字或機(jī)構(gòu)名稱進(jìn)行市場推廣。
BSD 對商業(yè)比較友好,很多公司在選用開源產(chǎn)品的時候都首選 BSD 協(xié)議,因?yàn)榭梢酝耆刂七@些第三方的代碼,甚至在必要的時候可以修改或者二次開發(fā)。
3) Apache 許可證版本(Apache License Version)協(xié)議
Apache 和 BSD 類似,都適用于商業(yè)軟件。Apache 協(xié)議在為開發(fā)人員提供版權(quán)及專利許可的同時,允許用戶擁有修改代碼及再發(fā)布的自由。
現(xiàn)在熱門的 Hadoop、Apache HTTP Server、MongoDB?等項(xiàng)目都是基于該許可協(xié)議研發(fā)的,程序開發(fā)人員在開發(fā)遵循該協(xié)議的軟件時,要嚴(yán)格遵守下面的四個條件:
-
該軟件及其衍生品必須繼續(xù)使用 Apache 許可協(xié)議。
-
如果修改了程序源代碼,需要在文檔中進(jìn)行聲明。
-
若軟件是基于他人的源代碼編寫而成的,則需要保留原始代碼的協(xié)議、商標(biāo)、專利聲明及其他原作者聲明的內(nèi)容信息。
-
如果再發(fā)布的軟件中有聲明文件,則需在此文件中標(biāo)注 Apache 許可協(xié)議及其他許可協(xié)議。
4) MIT(Massachusetts Institute of Technology)協(xié)議
目前限制最少的開源許可協(xié)議之一(比 BSD 和 Apache 的限制都少),只要程序的開發(fā)者在修改后的源代碼中保留原作者的許可信息即可,因此普遍被商業(yè)軟件所使用。
使用 MIT 協(xié)議的軟件有 PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono 等。
5) GUN LGPL(GNU Lesser General Public License,GNU 寬通用公共許可證)
LGPL 是 GPL 的一個衍生版本,也被稱為 GPL V2,該協(xié)議主要是為類庫設(shè)計的開源協(xié)議。
LGPL 允許商業(yè)軟件通過類庫引用(link)的方式使用 LGPL 類庫,而不需要開源商業(yè)軟件的代碼。這使得采用 LGPL 協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售。
但是如果修改 LGPL 協(xié)議的代碼或者衍生品,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用 LGPL 協(xié)議。因此LGPL協(xié)議的開源代碼很適合作為第三方類庫被商業(yè)軟件引用,但不適合希望以 LGPL 協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。
如何選擇開源協(xié)議
世界上的開源協(xié)議有上百種,很少有人能徹底搞清它們之間的區(qū)別,即使在最流行的六種開源協(xié)議——GPL、BSD、MIT、Mozilla、Apache 和 LGPL——之中做選擇,也很復(fù)雜。
烏克蘭程序員 Paul Bagwell 畫了一張分析圖,說明應(yīng)該怎么選擇開源協(xié)議,大家看了一目了然,真是清爽。
## 二. 虛擬軟件安裝
```python
# 虛擬化技術(shù):kvm,vmware,openstack,docker,k8s
# iaas,paas,saas
# openstack:iaas
# docker:paas
# k8s:容器編排,管理容器,不同機(jī)器上的容器
# 一路下一步,裝完(試用,輸入激活碼),打開
# 網(wǎng)絡(luò)模式:NAT,橋接,僅主機(jī)
?? ?橋接:虛擬機(jī)和宿主機(jī)屬于同一個網(wǎng)段
? ? NAT:網(wǎng)絡(luò)地址轉(zhuǎn)換,
? ??
? ??
# 快照:相當(dāng)于備份一下,以后如果出了問題可以恢復(fù)到快照的狀態(tài)
```
## 三. centos 7.6安裝
```python
# 32位和64位操作系統(tǒng)
# DHCP :
DHCP(動態(tài)主機(jī)配置協(xié)議)是一個局域網(wǎng)的網(wǎng)絡(luò)協(xié)議。指的是由服務(wù)器控制一段IP地址范圍,客戶機(jī)登錄服務(wù)器時就可以自動獲得服務(wù)器分配的IP地址和子網(wǎng)掩碼。默認(rèn)情況下,DHCP作為Windows Server的一個服務(wù)組件不會被系統(tǒng)自動安裝,還需要管理員手動安裝并進(jìn)行必要的配置
# dns:可以把域名地址轉(zhuǎn)換成ip地址
# 主機(jī)名:生產(chǎn)環(huán)境,要有意義 ?地址+樓層+房間號+業(yè)務(wù)
# swap分區(qū):交換分區(qū)
# 關(guān)于分區(qū)
linux 分區(qū)結(jié)構(gòu)為樹結(jié)構(gòu), windows 為森林結(jié)構(gòu),所以有C盤D盤之類的, 而linux /分區(qū)就是根分區(qū), swap可以理解為虛擬內(nèi)存, /boot 這是個目錄, 可以分成一個分區(qū),然后掛載到/boot目錄, 也可以只用一個/分區(qū), 里面會有boot目錄的,保存的是引導(dǎo)文件,內(nèi)核等等的東東
```
## 四. xshell安裝和連接
```python
# 重啟網(wǎng)卡
systemctl restart network
```
systemctl restart network
## 五. bash shell 介紹和使用
### 1 什么是Bash shell(殼)
```python
是一個命令解釋器,就是一個軟件 ?執(zhí)行就是bash,可以在里面輸入命令,做交互,exit退出
```
### 2 能干什么
```python
原來在windows上點(diǎn)點(diǎn)點(diǎn)完成的是,它都能做到
使用Shell實(shí)現(xiàn)對Linux系統(tǒng)的大部分管理,例如:
1.文件管理(文件創(chuàng)建,移動,復(fù)制,刪除,編輯…)
2.權(quán)限管理(不同用戶不通權(quán)限)
3.用戶管理(創(chuàng)建,刪除….)
4.磁盤管理(掛載)
5.網(wǎng)絡(luò)管理
6.軟件管理
等等
```
### 3 平時我們?nèi)绾问褂肧hell呢?
```python
1 輸入命令,低效
2 shell script:shell腳本 ?,批量執(zhí)行命令
```
### 4 ?shell提示符
```python
[root@lqz ~]#
# root:當(dāng)前用戶
# @ :沒有意義
#lqz:主機(jī)名
# ~:家目錄
# #:表示超級用戶
[lqz@lqz ~]$?
```
### 5 Shell基礎(chǔ)語法
```python
# ?命令 ?選項(xiàng) ?參數(shù) ? 三部分組成
ls -a ?/temp ? ? ?
ls --all
# 以下三個一樣
ls -l -a
ls -la
ls -al
```
### 6 命令補(bǔ)全
```python
# 一下或者兩下tab建
# 一下的話會直接找到你要用的命令
# 兩下,可能會用到的全列出來
# ifconfig 在7的版本沒有,需要裝軟件
yum insatll net-tools -y
yum insatll net-tools
# yum install bash-completion -y ? 補(bǔ)齊選項(xiàng)
ls - 兩下tab建,所有的選項(xiàng)都會提示出來
```
### 7 命令快捷鍵
```python
Ctrl + a ? ?#光標(biāo)跳轉(zhuǎn)至正在輸入的命令行的首部
Ctrl + e ? ?#光標(biāo)跳轉(zhuǎn)至正在輸入的命令行的尾部
Ctrl + c ? ?#終止前臺運(yùn)行的程序 ? ##################
Ctrl + d ? ?#在shell中,ctrl-d表示推出當(dāng)前shell。
Ctrl + z ? ?#將任務(wù)暫停,掛至后臺
Ctrl + l ? ?#清屏,和clear命令等效。 ?##############
Ctrl + k ? ?#刪除從光標(biāo)到行末的所有字符
Ctrl + u ? ?#刪除從光標(biāo)到行首的所有字符
Ctrl + r ? ?#搜索歷史命令, 利用關(guān)鍵字,Tab建選中,只能找到最近的一條
Ctrl + w ? ?#按單詞或空格進(jìn)行向前刪除
Ctrl + 左右建 #按單詞或空格進(jìn)行向前向后跳
#在命令行前加面加 "#" 則該命令不會被執(zhí)行
```
### 8 history
```python
# history查看歷史命令
# !數(shù)字 ? 快速執(zhí)行數(shù)字那一行
# !yum ? ?快速執(zhí)行最近一條yum命令
# history -d 70 ?把歷史記錄的第70行刪除
# history -c ? 清空所有記錄(連到人家服務(wù)器,操作完了,執(zhí)行一下)
# history -w ? 可以把 歷史記錄寫到用戶家路徑的.bash_history文件中
```
總結(jié)
以上是生活随笔為你收集整理的python day 105的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IndexedDB数据库
- 下一篇: unity【KeyCode 键码】查询表