這篇文章是寫給 Linux 初學者的,我會分享一些作為初學者應該知道的一些東西,這些內容都是本人從事 Linux 開發工作多年的心得體會,相信會對初學者有所幫助。如果你是 Linux 老鳥,那可能就不需要再往下看啦
為啥要學Linux
作為從事 IT 工作的同學,對 Linux 系統一定不陌生。如今我們在各種領域都能看得到它的身影,比如,手機、服務器、嵌入式、電信設備、大型計算機,以及各種電子類產品都離不開 Linux,它已經滲透到互聯網世界的方方面面了。
包括那些火熱的技術,比如云計算、虛擬化、容器、大數據、人工智能,幾乎都是基于 Linux 技術的,那些平臺系統,電商、團購、社交、新聞、快遞,都是部署在服務器端,也幾乎都是基于 Linux 技術的。
在編程的世界中,Linux 就是主流,不會 Linux 你就可能會格格不入。如果你想進大公司,想學新技術,Linux 一定是一道繞不過去的砍,只有進入了 Linux 系統這扇大門,你才可能成為合格的軟件工程師。
企業服務器環境絕大部分都是 Linux 系統,所以不管你是從事前端、后端、運維、測試中的哪一類工作,Linux 都是你必須掌握的基礎知識,只是不同類型工作需要學習 Linux 的方向不同而已。
經驗與建議
下邊的一些建議都是本人從事 Linux 開發多年的一些經驗總結,相信會對 Linux 初學者有所幫助,當然如果有不準確的地方,還請指正。
一定要自己搭建Linux環境
Linux 系統學習是很重實踐的,僅學習理論知識是不能真正掌握 Linux 的。我推薦在個人電腦上安裝虛擬機,虛擬機的方式非常靈活,既可以提供 Linux 環境,也不會影響宿主機的正常使用。對于虛擬機軟件的選擇,可以考慮使用 VMware 或 VirtualBox 。虛擬機的快照功能一定要用好,尤其是對新手來說,它可以將你不小心搞壞的環境恢復到初始化狀態,就像是重新安裝了操作系統一樣,從此媽媽再也不用擔心我 rm -rf /* 了。
Linux發行版的選擇
由于 Linux 的強大,目前存在太多的發行版本了,有些同學在選擇上可能會有些糾結。這里我推薦選擇使用 CentOS 就行,由于免費且穩定,國內企業服務器使用最多的就是 CentOS 了,使用上和 RedHat 幾乎沒有什么區別。當然你可以選擇 Ubuntu 系統,國內服務器使用份額僅次于 CentOS。其實所有發行版都是基于 Linux 內核的,只是擴展了相關的系統組件和軟件庫,本質上都是 Linux 系統,學會了 CentOS 后就很容易上手其它版本的系統了,所以無需太關注和糾結這個問題。
一定要使用命令行
大部分初學者經常喜歡安裝圖形桌面,因為我們之前都習慣了 win 或 mac 的圖形操作。但我強烈建議,安裝系統時不要安裝桌面,平時的操作和學習都堅持使用命令行。學習前期可能會比較痛苦,但熬過了陣痛期,熟練使用之后,就能享受到命令行帶來的強大功能。命令行不僅功能強大,而且可以極大的提高效率,因為命令行就意味著能夠自動化,自動化能為你釋放很多重復性的工作,讓你有充足的時間去學習更有價值的知識。另外,圖形界面在 linux 系統上作為一個獨立軟件存在,會額外消耗服務器的資源,企業的服務器一定是不會安裝圖形的,所以需要你一定要在 Linux 世界中忘掉 windows 的思維方式。
Linux 是開源的
開源意味著你能夠查看 Linux 源碼,可以從代碼層面理解系統實現的原理,這些可以讓你達到一通百通、醍醐灌頂的效果,而不是簡單的使用它。
養成安全嚴謹的良好習慣
對于初學者來說,雖然大部分時間是在虛擬機上操作,有快照的加持,可以毫無顧忌的進行各種實驗性的操作。但我還是強烈建議初學者一定要養成良好的操作習慣:
1.經常備份重要的數據;
2.少用 root 用戶進行各種操作;
3.敲命令不是越快越好;
4.服務器密碼盡可能的復雜些,不要使用 123456 這類弱密碼,服務器很可能被侵入當肉雞;
5.服務器密碼不要簡單記錄在文檔上或 U 盤之類的移動設備上;6.對生產環境一定要有敬畏心。
如何學習?
高效的學習方法往往能夠幫助你事半功倍,下邊是我分享的一些自己的學習心得和方法,希望對大家有幫助。
一定要多實踐
Linux 是一門實操性非常強的學科,初學者需要多敲命令,多實踐和練習。與學習其它東西是一樣的,大多時候我們不需要非得先將理論知識學的通透后才來實踐動手,而是從實踐中發現問題后再深度學習,這樣效果可能會更好。
有效的學習方式
說到學習方式,每個人學習的方式可能不太一樣。我推薦 視頻 + 看書 的方式,視頻教程可以讓你快速上手,快速了解相關的概念,而看書可以更加全面的學習具體的細節,會讓你有更多的思考,看書可以作為視頻的補充和擴展。
思考,總結與歸納
不管以什么形式來學習,我們都需要對學習中的每個問題和概念認真思考,需要從 what、how、why 三個角度進行學習,作為學習的問題模板。學習任何新技術,我們都需要知道這個技術知識點的應用場景,以及能夠解決什么問題,是否有類似的解決方案,此技術點有什么優勢。
輸出是一種高效學習方法
在學習過程中,必不可少的一個環節就是歸納和總結,總結就要輸出,可以是文檔形式的筆記或者其它。我比較推薦寫博客,有條件的話一定要寫,因為寫博客可以幫助你更有效地、更系統的總結和學習。寫博客是一種 教 的形式,如果能夠將自己學到的知識在博客上清晰的講清楚,教會別人,那才說明你是真正的掌握了它。如果博客寫的不錯的話也能為自己夠積累影響力,對自己將來的求職也會有幫助。另外如果別人從你博客學習到了東西而且覺著不錯的話,會給你點贊、留言、贊賞,這都是對你寫博客和學習的正反饋,同時也能夠刺激你保持學習的興奮和激情,呵呵。
制定明確的學習目標
做任何事,有了目標才能夠走的更遠,少走彎路。我們學習 Linux 也一樣,需要根據自己的實際情況,制定適合自己的學習目標。個人建議目標不要太大,時間周期也不要太長,要切合實際,比如制定三個月的學習目標。有了目標后,就要確定詳細的學習計劃,細化到每周需要完成的任務列表。注意,你需要為計劃任務指定結果檢驗的方式,比如寫一篇博客文章或是筆記,計劃真實落地才是最困難的,因為執行力是一種稀缺資源。
堅持與激情,獲得正反饋
學習是一件逆人性的事情,大部分人在遇到諸多問題后就很容易會放棄。1.合理的學習計劃和結果輸出,能夠讓你繼續保持學習的激情;2.寫博客、討論交流等方式也可以獲得正向的反饋,從而激勵著你繼續向前;3.堅持學習也能夠幫你養成良好的習慣,無形中提高自己的執行力,個人認為這些收獲可能遠比具體的技術知識更加重要。
如何解決問題
在學習 Linux 技術的時候,初學者肯定會遇到各種 奇怪 的問題,面對這些問題時,我們要學會分析錯誤信息,嘗試以目前學習到的技術來思考找答案。
如果解決不了,可以使用搜索引擎,對于初學者遇到的問題,百度一般都能夠解決。如果實在解決不了,可以請教身邊的高手,不過提問問題時,一定要描述清楚問題,帶著謙虛請教的態度。
應該學習的基礎知識
Linux 系統涉及的技術知識點非常廣泛,學習者可以根據自己的實際情況,選擇相應的主題方向進行學習,不可盲目的跟隨他人的學習路線,有可能適得其反,學習效果事倍功半,得不償失,所以選擇適合自己的學習路線非常重要。
因為每個人將來從事的工作和方向不同,需要重點學習的內容也不一樣,而且本文目標也只是分享給 Linux 初學者一些實用的經驗心得,所以后邊內容中只簡單羅列了最通用和實用的一些技術,這些是學習 Linux 技術的所有同學都應該知道的技術知識點。
學習 vim
在 Linux 系統下,基本沒有什么可以與之競爭的編輯器(不接受反駁),你只需要花費 1-2 天的時間來熟悉 vim 的基本使用操作即可,無需研究那些高大上的各種插件使用技巧。要知道 vim 的學習是有難度的,不過一旦熟練使用后,就會得心應手,能極大提高編輯效率。這里推薦陳皓的《簡明 vim 練級攻略》。
簡單的文件管理
這些都是一些非常基礎的操作與文件的管理命令,如:ls、less、head、tail、du、df、ln 等,當然 find 是查找文件的非常有用的命令,功能非常強大。
基礎的網絡管理
常用的網絡管理命令,一定要學會使用,這對平時工作或學習時的網絡診斷和網絡配置非常有用。比如 ip 或 ifconfig 等網絡命令,還有網絡診斷工具 netstat、ping、traceroute 等。
學些 shell 腳本編程
我們知道 Linux 特點之一就是命令行,上邊我們說過,命令行就意味著可以自動化,自動化后就能夠規模化。shell 腳本就是我們實現自動化的最有效的方式,因為 shell 程序是最擅長與 Linux 內核打交道的。我們可以利用 shell 腳本幫我們做很多重復性的工作,來釋放我們工程師的雙手去創造更大的價值。
熟悉作業管理
我們需要經常在命令行終端上管理應用程序,啟動或關閉程序。你需要知道這些概念,如:進程、進程組、會話、終端,學會使用 jobs、fg、bg、kill、Ctrl-C、Ctrl-Z,以及信號的相關操作,需要知道 kill -9 到底是在干什么。
學習使用軟件包的管理
國內最常用的 Linux 發行版是 ubuntu、centos,需要學會使用 apt-get、yum 命令來查找和安裝相關的軟件包,當然也要學會試著從源碼編譯方式安裝軟件。
學習簡單的數據處理
我們在工作和學習中也會經常需要處理文本信息,Linux 在這方面提供了很多的工具,組合起來能夠非常方便的實現強大的功能。常見的命令 sort、uniq、cut、split,還有 Linux 經典的三劍客 sed、awk、grep,這三個工具都是上古神器,功能非常強大,awk 還有專門的書籍來講解它,可見功能之強大與復雜,我們初學者只需要熟練掌握一些常用的功能即可。
學會看文檔
雖然不是具體的技術知識,但它卻非常重要,初學者在學習命令時總是希望能記住所有的參數和選項,其實這些參數我們不需要記憶(大腦是用來思考的而不是存儲的),我們可以通過 Linux 手冊來查看,通常使用 man ifconfig 就能夠查看該命令的官方文檔說明,既準確又清晰。當然在遇到問題時,也可以查看手冊來確認命令的使用方法是否正確。
Linux 系統涉及的技術知識點非常復雜,上述所分享的僅是一些必學基礎知識,如果能夠認真學習并夠掌握好,基本上算是入門 Linux(存活的級別)。
如果你是運維方向,至少需要更深入的學習:用戶管理、磁盤管理、系統日常管理、常見服務的搭建、高可用集群、系統監控等運維知識。
如果你是后端開發方向,至少需要更深入學些 Linux 操作系統、進程與線程、進程間通信、信號、網絡編程、系統調用、Linux 內核等知識。
如果你是嵌入式方向,你至少需要深入研究 Linux 內核源碼、設備驅動程序了。
編輯:lyn
-
Linux
+關注
關注
87文章
11304瀏覽量
209503 -
網絡管理
+關注
關注
0文章
120瀏覽量
27673 -
IT
+關注
關注
2文章
864瀏覽量
63519
原文標題:寫給 Linux 初學者的一封信
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論