這篇文章是寫給 Linux 初學(xué)者的,我會(huì)分享一些作為初學(xué)者應(yīng)該知道的一些東西,這些內(nèi)容都是本人從事 Linux 開發(fā)工作多年的心得體會(huì),相信會(huì)對(duì)初學(xué)者有所幫助。如果你是 Linux 老鳥,那可能就不需要再往下看了
linux
為啥要學(xué)Linux
作為從事 IT 工作的同學(xué),對(duì) Linux 系統(tǒng)一定不陌生。如今我們在各種領(lǐng)域都能看得到它的身影,比如,手機(jī)、服務(wù)器、嵌入式、電信設(shè)備、大型計(jì)算機(jī),以及各種電子類產(chǎn)品都離不開 Linux,它已經(jīng)滲透到互聯(lián)網(wǎng)世界的方方面面了。
包括那些火熱的技術(shù),比如云計(jì)算、虛擬化、容器、大數(shù)據(jù)、人工智能,幾乎都是基于 Linux 技術(shù)的,那些平臺(tái)系統(tǒng),電商、團(tuán)購、社交、新聞、快遞,都是部署在服務(wù)器端,也幾乎都是基于 Linux 技術(shù)的。
在編程的世界中,Linux 就是主流,不會(huì) Linux 你就可能會(huì)格格不入。如果你想進(jìn)大公司,想學(xué)新技術(shù),Linux 一定是一道繞不過去的砍,只有進(jìn)入了 Linux 系統(tǒng)這扇大門,你才可能成為合格的軟件工程師。
企業(yè)服務(wù)器環(huán)境絕大部分都是 Linux 系統(tǒng),所以不管你是從事前端、后端、運(yùn)維、測試中的哪一類工作,Linux 都是你必須掌握的基礎(chǔ)知識(shí),只是不同類型工作需要學(xué)習(xí) Linux 的方向不同而已。
經(jīng)驗(yàn)與建議
下邊分享的內(nèi)容是本人從事 Linux 開發(fā)多年的一些經(jīng)驗(yàn)總結(jié),相信對(duì) Linux 初學(xué)者會(huì)有所幫助,當(dāng)然如果有不準(zhǔn)確的地方,還請指正。
一定要自己搭建Linux環(huán)境。Linux 系統(tǒng)學(xué)習(xí)是很重實(shí)踐的,僅學(xué)習(xí)理論知識(shí)是不能真正掌握 Linux 的。我推薦在個(gè)人電腦上安裝虛擬機(jī),虛擬機(jī)的方式非常靈活,既可以提供 Linux 環(huán)境,也不會(huì)影響宿主機(jī)的正常使用。對(duì)于虛擬機(jī)軟件的選擇,可以考慮使用 VMware 或 VirtualBox 。虛擬機(jī)的快照功能一定要用好,尤其是對(duì)新手來說,它可以將你不小心搞壞的環(huán)境恢復(fù)到初始化狀態(tài),就像是重新安裝了操作系統(tǒng)一樣,從此媽媽再也不用擔(dān)心我 rm -rf /* 了。
Linux發(fā)行版的選擇。由于 Linux 的強(qiáng)大,目前存在太多的發(fā)行版本了,有些同學(xué)在選擇上可能會(huì)有些糾結(jié)。這里我推薦選擇使用 CentOS 就行,由于免費(fèi)且穩(wěn)定,國內(nèi)企業(yè)服務(wù)器使用最多的就是 CentOS 了,使用上和 RedHat 幾乎沒有什么區(qū)別。當(dāng)然你可以選擇 Ubuntu 系統(tǒng),國內(nèi)服務(wù)器使用份額僅次于 CentOS。其實(shí)所有發(fā)行版都是基于 Linux 內(nèi)核的,只是擴(kuò)展了相關(guān)的系統(tǒng)組件和軟件庫,本質(zhì)上都是 Linux 系統(tǒng),學(xué)會(huì)了 CentOS 后就很容易上手其它版本的系統(tǒng)了,所以無需太關(guān)注和糾結(jié)這個(gè)問題。
一定要使用命令行。大部分初學(xué)者經(jīng)常喜歡安裝圖形桌面,因?yàn)槲覀冎岸剂?xí)慣了 win 或 mac 的圖形操作。但我強(qiáng)烈建議,安裝系統(tǒng)時(shí)不要安裝桌面,平時(shí)的操作和學(xué)習(xí)都堅(jiān)持使用命令行。學(xué)習(xí)前期可能會(huì)比較痛苦,但熬過了陣痛期,熟練使用之后,就能享受到命令行帶來的強(qiáng)大功能。命令行不僅功能強(qiáng)大,而且可以極大的提高效率,因?yàn)槊钚芯鸵馕吨軌蜃詣?dòng)化,自動(dòng)化能為你釋放很多重復(fù)性的工作,讓你有充足的時(shí)間去學(xué)習(xí)更有價(jià)值的知識(shí)。另外,圖形界面在 linux 系統(tǒng)上作為一個(gè)獨(dú)立軟件存在,會(huì)額外消耗服務(wù)器的資源,企業(yè)的服務(wù)器一定是不會(huì)安裝圖形的,所以需要你一定要在 Linux 世界中忘掉 windows 的思維方式。
Linux 是開源的。開源意味著你能夠查看 Linux 源碼,可以從代碼層面理解系統(tǒng)實(shí)現(xiàn)的原理,這些可以讓你達(dá)到一通百通、醍醐灌頂?shù)男Ч皇呛唵蔚氖褂盟?/li>
養(yǎng)成安全嚴(yán)謹(jǐn)?shù)牧己昧?xí)慣。對(duì)于初學(xué)者來說,雖然大部分時(shí)間是在虛擬機(jī)上操作,有快照的加持,可以毫無顧忌的進(jìn)行各種實(shí)驗(yàn)性的操作。但我還是強(qiáng)烈建議初學(xué)者一定要養(yǎng)成良好的操作習(xí)慣:1.經(jīng)常備份重要的數(shù)據(jù);2.少用 root 用戶進(jìn)行各種操作;3.敲命令不是越快越好;4.服務(wù)器密碼盡可能的復(fù)雜些,不要使用 123456 這類弱密碼,服務(wù)器很可能被侵入當(dāng)肉雞;5.服務(wù)器密碼不要簡單記錄在文檔上或 U 盤之類的移動(dòng)設(shè)備上;6.對(duì)生產(chǎn)環(huán)境一定要有敬畏心。
如何解決問題。在學(xué)習(xí) Linux 技術(shù)的時(shí)候,初學(xué)者肯定會(huì)遇到各種 奇怪 的問題,面對(duì)這些問題時(shí),我們要學(xué)會(huì)分析錯(cuò)誤信息,嘗試以目前學(xué)習(xí)到的技術(shù)來思考找答案,如果解決不了,可以使用搜索引擎,對(duì)于初學(xué)者遇到的問題,百度一般都能夠解決。如果實(shí)在解決不了,可以請教身邊的高手,不過提問問題時(shí),一定要描述清楚問題,帶著謙虛請教的態(tài)度。
應(yīng)該學(xué)習(xí)的基礎(chǔ)知識(shí)
Linux 系統(tǒng)涉及的技術(shù)知識(shí)點(diǎn)非常廣泛,學(xué)習(xí)者可以根據(jù)自己的實(shí)際情況,選擇相應(yīng)的主題方向進(jìn)行學(xué)習(xí),不可盲目的跟隨他人的學(xué)習(xí)路線,有可能適得其反,學(xué)習(xí)效果事倍功半,得不償失,所以選擇適合自己的學(xué)習(xí)路線非常重要。
因?yàn)槊總€(gè)人將來從事的工作和方向不同,需要重點(diǎn)學(xué)習(xí)的內(nèi)容也不一樣,而且本文目標(biāo)也只是分享給 Linux 初學(xué)者一些實(shí)用的經(jīng)驗(yàn)心得,所以后邊內(nèi)容中只簡單羅列了最通用和實(shí)用的一些技術(shù),這些是學(xué)習(xí) Linux 技術(shù)的所有同學(xué)都應(yīng)該知道的技術(shù)知識(shí)點(diǎn)。
學(xué)習(xí) vim。在 Linux 系統(tǒng)下,基本沒有什么可以與之競爭的編輯器(不接受反駁),你只需要花費(fèi) 1-2 天的時(shí)間來熟悉 vim 的基本使用操作即可,無需研究那些高大上的各種插件使用技巧。要知道 vim 的學(xué)習(xí)是有難度的,不過一旦熟練使用后,就會(huì)得心應(yīng)手,能極大提高編輯效率。這里推薦陳皓的《簡明 vim 練級(jí)攻略》。
學(xué)習(xí)使用軟件包的管理。國內(nèi)最常用的 Linux 發(fā)行版是 ubuntu、centos,需要學(xué)會(huì)使用 apt-get、yum 命令來查找和安裝相關(guān)的軟件包,當(dāng)然也要學(xué)會(huì)試著從源碼編譯方式安裝軟件。
學(xué)習(xí)簡單的數(shù)據(jù)處理。我們在工作和學(xué)習(xí)中也會(huì)經(jīng)常需要處理文本信息,Linux 在這方面提供了很多的工具,組合起來能夠非常方便的實(shí)現(xiàn)強(qiáng)大的功能。常見的命令 sort、uniq、cut、split,還有 Linux 經(jīng)典的三劍客 sed、awk、grep,這三個(gè)工具都是上古神器,功能非常強(qiáng)大,awk 還有專門的書籍來講解它,可見功能之強(qiáng)大與復(fù)雜,我們初學(xué)者只需要熟練掌握一些常用的功能即可。
學(xué)會(huì)看文檔。雖然不是具體的技術(shù)知識(shí),但它卻非常重要,初學(xué)者在學(xué)習(xí)命令時(shí)總是希望能記住所有的參數(shù)和選項(xiàng),其實(shí)這些參數(shù)我們不需要記憶(大腦是用來思考的而不是存儲(chǔ)的),我們可以通過 Linux 手冊來查看,通常使用 man ifconfig 就能夠查看該命令的官方文檔說明,既準(zhǔn)確又清晰。當(dāng)然在遇到問題時(shí),也可以查看手冊來確認(rèn)命令的使用方法是否正確。
Linux 系統(tǒng)涉及的技術(shù)知識(shí)點(diǎn)非常復(fù)雜,上述所分享的僅是一些必學(xué)基礎(chǔ)知識(shí),如果能夠認(rèn)真學(xué)習(xí)并夠掌握好,基本上算是入門 Linux(存活的級(jí)別)。如果你是運(yùn)維方向,至少需要更深入的學(xué)習(xí):用戶管理、磁盤管理、系統(tǒng)日常管理、常見服務(wù)的搭建、高可用集群、系統(tǒng)監(jiān)控等運(yùn)維知識(shí);如果你是后臺(tái)開發(fā)方向,至少需要更深入學(xué)些 Linux 操作系統(tǒng)、進(jìn)程與線程、進(jìn)程間通信、信號(hào)、網(wǎng)絡(luò)編程、系統(tǒng)調(diào)用、Linux 內(nèi)核等知識(shí);如果你是嵌入式方向,你至少需要深入研究 Linux 內(nèi)核源碼、設(shè)備驅(qū)動(dòng)程序了。
本篇文章到此結(jié)束,后邊還會(huì)更新 Linux 系列文章,文章內(nèi)容風(fēng)格會(huì)盡量保持通俗易懂、重實(shí)踐和實(shí)用性,盡可能地幫助到有需要的同學(xué),如果感興趣的話,可以繼續(xù)關(guān)注后續(xù) Linux 系列文章。