Linux系統是使用Linux內核及開源自由軟體組成的一套作業系統,是一種類UNIX系統,其內核在1991年10月5日由林納斯·託瓦茲首次發布。它的主要特性:Linux文件一切皆文件、完全開源免費、支持多用戶和多任務、同時還支持多種架構平臺、可靠的安全性、良好的穩定性、具有強大的網絡功能、多樣圖形界面;近幾年Linux系統慢慢吸引了不少人,正是由於它的強大,支撐著巨大的項目,並不斷影響著大多數人的生活。
如今的網際網路,絕大多數的網站、服務、遊戲均是跑在Linux上面的,雖說Linux發行版眾多,只要玩熟了一種發行版,了解了Linux精髓、基本架構、設計原理,其他都是觸類旁通的,千萬不要在選擇哪一發行版而浪費很多時間,不值當的,這就如同我是上清華好,還是上北大好呢?統稱為[清北謎題]了,這裡小編個人建議新手還是選擇CentOS或者RHEL上手為好。
不管是學習語文、英語,還是學習數學、物理,不管你採用何種方法,都離不開三個階段:記憶、掌握、運用。也許描述的並不十分準確,但大體上是這樣子的。以此類推,對於如何學習Linux,也是可以參照上述三個階段來學習的。
因此,對於學習Linux而言,第一步就是記住Linux命令,知道其中的原理。但是,Linux命令非常多,難道都需要記住?這肯定是不現實的。所以,我們要先知道哪些Linux命令是必須要記住的,哪些Linux命令是只要了解一下就可以的,哪些Linux命令是無關緊要的,要學會拈輕掇重。
那麼具體需要掌握哪些知識呢?這裡羅列一些必須掌握的知識:
1、了解Linux FHS,這是Linux的體系結構,明白大致原理
2、重複60個常用Linux基礎、命令,掛載
3、TCP/IP協議,網絡服務配置相關知識
4、SSH原理及應用
5、防火牆的基本配置,iptables
在Linux下面掌握一些初級工具、技能是非常有必要的:
1、Vim編輯器,無論對於寫配置文件,還是寫語言腳本,Vim始終是Linux上面的必備神氣,需要掌握基本操作方法、快捷鍵。
2、Git版本控制,很多人可能覺得沒有必要,這個是開發才學的嘛,其實不然,今天Devops的日漸崛起,對於傳統運維工程師來說是一個挑戰,也是一個機遇。工程師們日常需要寫大量的腳本,可以使用Git來管理、備份常用代碼、腳本。
3、Shell編程,寫腳本當然需要Shell啦,這也是基礎。同上,作為Devops來說,再學習一門高效的腳本語言也是必需的,這裡推薦Python,不過這是後話,先把Shell掌握了再說吧。
其實如果你把上面的要求掌握到80%,基本上算入門了,接下來需要去學習一些硬體知識,做運維工程師會經常和網絡設備,伺服器等硬體設備打交道,對於硬體知識也要做到了解。特別是判斷硬體的優劣的核心參數,比如內存的存儲介質、容量、速度、奇偶校驗,CPU的製造工藝、核數線程、內外頻、緩存等等。我們在工作中不僅僅只需要「軟知識」,「硬知識」也是必不可少的關鍵技能,特別是當公司業務劇增,需要新增機房、伺服器時,就要用很多「硬知識」了,網絡傳輸介質的選擇、UPS等等,都應該有所了解。
對於自學的朋友來說,沒有老師,自然是去找個「老師」了。我所指的「老師」,並不是僅僅指培訓班的老師,也可以是你身邊的朋友、網友、書籍、網絡等等。最方便快捷的自然是報個培訓班,然後由老師專門講解傳授,這樣學習起來效率最高。其次,你也可以去找幾本介紹Linux知識的專業書籍,然後自己參照書籍去學習,這樣也是不錯的。
看書可以系統化的學習、循序漸進,不會初學者不知道從哪兒開始的感覺。建議選擇一本Linux入門書籍,前期可以安裝一個Linux虛擬機,重複練習為主要手段,把一本書好好吃透,重點是吃透,那麼你也就入門了,尤其推薦想自學Linux系統的同學看一下《Linux就該這麼學》,這本書從零基礎開始講起,涵蓋的知識不僅實用,而且有實驗可以做,隨時檢查自己的學習進度。
小編在此羅列一些學習過程中覺得不錯的書籍,推薦給朋友。
入門書:
《鳥哥的私房菜(基礎篇)》
《鳥哥的私房菜(服務篇)》
《Linux命令行與Shell腳本編程大全(第2版)》
《UNIX/Linux 系統管理技術手冊》
《UNIX編程藝術》
計算機及作業系統原理書:
《深入理解計算機系統(原書第2版)》
《現代作業系統 (原書第3版)》
深入理解Linux系統(說明:開發類的書籍只求讀懂其講到的原理部分就成)
原理篇:
《Linux內核設計與實現(原書第3版)》
《Linux程序設計(第4版)》
《構建嵌入式Linux系統(第二版)》
《深入理解LINUX內核(第三版)》
《UNIX網絡編程 卷1:套接字聯網API(第3版)》
《UNIX網絡編程 卷2:進程間通信(第2版)》
《UNIX 環境高級編程(第2版)》
《程式設計師的自我修養—連結、裝載與庫》
《Linux設備驅動程序(第三版)》
實做篇:
《手把手教你構建自己的Linux系統》
《高性能Linux伺服器構建實戰》
shell
我看過最好的 《shell編程藝術》
lamp/lnmp
nginx: 《取代Apache的高性能Web伺服器》
apache:《Apache伺服器配置與使用工作筆記》
mysql:《高性能MySQL》
安全
《Linux firewalls》
《白帽子講web安全》
架構
《大型網站技術架構》
《構建高性能web站點》
docker
《Docker技術入門與實戰》
nosql
《redis設計與實現》
《mongodb權威指南》
自動化
《Puppet實戰》
《SaltStack技術入門與實戰》
雲計算、虛擬化
《OpenStack開源雲王者歸來 雲計算、虛擬化、Nova、Swift、Quantum與Hadoop》
python
《Python基礎教程》
監控
《Zabbix企業級分布式監控系統》
《華章科技:Nagios系統監控實踐》
單單擁有理論知識顯然是不夠的,如何更好的學習Linux系統?應該每個人都有不同的觀點,無不例外,最終目的是要學會如何使用,學到Linux的其中的精髓所在,方法很重要:
1. 選擇發行版系統——CentOS/RHEL
不建議使用其他發行版本,如果能熟練使用一種發行版,其他的發行版不是太大問題,只是命令上有所差別,請大家不要在這個問題上糾結,就好像大家說「PHP是世界上最好的語言」一樣,一定不要在選擇發行版本上浪費時間。
2. 選擇一本比較適合入門的書籍或導師
一本好書籍,能使學習事半功倍,一位好導師,能讓Linux學習更加輕鬆,如《Linux就該這麼學》,比較容易入門,內容精簡,講解透徹,但是你還可以讀適合自己的書籍,也並不一定要讀我推薦的這本,因為我完整的讀完過,覺得確實適合初學者。
3. 多練習、學會總結和思考
因為學習每一項技術都是在別人造好的輪子上不斷的模仿再模仿,只有多去練習,才能夠明白其中的原理,通過理解的方式去記憶,這樣就學會的很快。不懂的地方一定要查資料,善於使用搜尋引擎(百度/Google),系統的去學習,多練習,把書中的實驗做透,掌握其中的原理,然後去總結,查漏補缺,最好的思考也很重要,不要光學習,還要思考下這項技術應用的場景,所使用的原理等等,多思考為什麼。
4. 從基礎學起,迎難而上
Linux技能點:Linux系統基礎—Linux系統管理—Linux服務管理—Linux安全管理和防範—Linux高級運維—Linux運維自動化……
這裡只是簡單介紹一些,遠遠不止這些,希望我們能夠一起加油,當你真正入門後,你會接觸更多,對這個行業有更深層次的認識,需要學習的還有更多,給自己定更多的目標,當你學完這些,會對你以後的職業生涯有更好的幫助。
5. 職業發展方向
其實學完Linux技術可以有很多發展方向,就目前來說還是比較好找工作的:Linux運維、Linux運維架構師、Linux運維自動化,Linux開發的、DevOps等等崗位,根據自己所掌握的Linux技術,給自己定位一個發展方向,並一直努力下去,如果想更好的提高自己,獲得更高的薪水,可以考下紅帽認證,對以後的工作還是有很大用處的。
6. 技術的革新
對於IT技術的不斷革新,發展速度非常之快,如何成為強者,不被社會所淘汰,需要我們提高自身能力,近些年一直很火的:OpenStack、Doctor、Kubernetes、雲計算、同時還需要掌握一門開發語言:Python、shell、golang(其一)等等,都是需要我們自己去學習,不斷適應公司/企業需要的技能,才能更有競爭力。
本文通過學習linux的不同方面為大家整理了相關內容,內容可能不大全面,歡迎大家也分享自己對Linux的認識,學習方法,相信只要我們有自己的計劃和目標,並一直堅持下去,一定會在Linux的道路上越走越遠,成為一名合格的Linu運維工程師。