學好linux
1. 如何學習linux
第一階段:初級入門
初級階段需要把linux運維學習路線搞清楚,任何學習都是循序漸進的,所以學linux運維也是需要有一定的路線。
1、Linux基礎知識、基本命令(起源、組成、常用命令如cp、ls、file、mkdir等常見操作命令)
2、Linux用戶及許可權基礎
3、Linux系統進程管理進階
4、linux高效文本、文件處理命令(vim、grep、sed、awk、find等命令)
5、shell腳本入門(可邊練習邊學習)
第二階段:中級進階
中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。
1、TCP/IP網路基礎(差不多CCNA、NP的知識就夠用)
2、Linux企業常用服務(如dns、http、ftp、mail、nfs等)
3、Linux企業級安全原理和防範技巧(系統性能/安全、安全威脅模型和保護方法
4、加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎
5、iptables安全策略構建
6、shell腳本進階(主要是結合一些應用,寫一些案例)
7、MySQL應用原理及管理入門(能管理和搭建一個個人博客站點)
第三階段:高級提升
1、http服務代理緩存加速(其中主要學習varnish、nginx緩存系統,要對CDN的知識有所了解。)
2、企業級負載集群(其中主要學習nginx、haproxy、lvs要對主要知識熟練掌握,對負載均衡演算法有清晰認識)
3、企業級高可用集群 (其中需要對keepalived,heartbeat等進行深入講解)
4、運維監控zabbix詳解(主要是zabbix、cacti、nagios等監控系統,現在用的比較多的是zabbix)
5、運維自動化學習(需要學一些開源運維自動化工具的使用如ansible、puppet、cobbler等運維自動化工具)
第四階段:資深方向進階
1、 大數據方向(需要對hadoop、storm等常見開源大數據系統需要深入了解)
2、 雲計算方向(主要是openstack這套東西,當然像一些kvm等虛擬化技術,也是需要掌握的,現在docker也比較流行)
3、 運維開發(主要是python運維開發)
4、 自動化運維(在之前自動化基礎上做深入)
5、 運維架構師(主要需要廣度,差不多5年左右以上經驗,可以擔當此職位)
2. 怎樣學好linux
1.安裝系統和軟體
通過安裝,我們能了解Linux的目錄結構;系統和軟體的安裝方法,以及基本目錄、文件和用的操作,沒有比這些更基礎的吧。
2、對Linux對硬體的安裝和維護;
Linux是個系統,我們得把她用起來才能達到我們的目的。在生產、生活和或者娛樂中的應用,最能體現她的價值。比如我們要讓Linux支持 scsi ;raid ;usb; firewire; mouse; video card;TV card 等,無非就是應用。比如我有滑鼠,在我的Linux中卻用不起來,是不是有點浪費??
3. 用戶管理
Linux是一個多用戶,多任務的系統,要讓很多人能同時用這台機器的Linux,我們不得不經常對用戶進行增加或者刪除。有的弟兄可能會說,我的機器上只有一個顯示器一套鍵盤和滑鼠,怎麼讓更多的用戶應用呢??可能初學Linux的弟兄可能早就明白了,比如 web伺服器,是不是多用戶的呢??ftp伺服器也應該是多用戶的吧。咱們不是有遠程登錄ssh 和telnet嗎?這個多用戶可不是一台機器,幾個人同時擠在同一個鍵盤和顯示器上用不同用戶名登錄系統。
4.磁碟管理
磁碟是有限的,就是再大的磁碟需要管理。因為我們都是玩家,再大的磁碟也感覺小。我現在有160的磁碟,我感覺還是不夠用,所以要把有限的空間都利用上,還得對磁碟有個計劃。。比如限制用戶家目錄空間;限制用戶上傳文件大小;定時查看磁碟分區的利用率 。管理員經常用 fdisk -l 或者 df -h -h 查來看分區,目錄的大小等
5.檢測系統狀態
有時學習Linux的弟兄總是問「為什麼我的機器開機這么慢?」;「Linux真的是浪費內存,對不對?」等。其實這些問題都涉及到系統監測。比如CPU、內存、網路利用率等 。因為生產型系統是必須有效率的。如果一台伺服器反應遲鈍,可能最急的是管理員。管理員首先要做的可能是查看系統運行狀態 。比如用top ; sar ; netstat等 ;
6.安全和備份;
對於生產型的系統,沒有比安全更重要了。如果發現安問題,可能管理員首要做的就是停止相應的服務,查看日誌,執行備份,以及打補丁。
世上沒有絕對安全的東西,硬體的可靠性沒有百分之分的,Linux系統也不是百分之百的安全。每天進行日常備份還是極為必要的。比如我們把重要的數據用備份到一個較為安全的地方,比如磁帶機,本地機,或者網路上的計算機上。
7.災難恢復
有了備份,才能有恢復之說,如果沒有備份,那就只能是一切從頭開始了。我想大家在玩自己的機器時也有所體會吧。災難只能說是天災了,真的遇到了災難,咱們不能怨天憂人了。罵什麼或者怪自己太大意都沒有用,我們做的只能是自己承受,能恢復多少算多少吧。只要每天都用心盡力了,恢復還不是太大的問題 。
8.網路管理
Internet 是最流行的,自從我們在學校的BBS和恐龍MM聊天開始,可能我們就懂得了Internet的強大,雖然在學校可能是校園網,但我們還是感覺到了網的神秘。在電視中,我們經常看到七八十歲的老爺爺和老奶奶運指如飛,對著顯示器聊的不亦樂乎。這就是net的魅力。我們可以在LinuxSir上聊天灌水,也是net的魅力。在LinuxSir的後面呢???這就是我們所要談到的,管理和版所要做的,比如web伺服器架設,FTP 、 IRC 、防火牆的架設;網路基本操作。比如簡的設置IP,IP追蹤; whois 這個ip是從如來的,各種網路伺服器進程查看等 。
9.系統管理與日誌分析
這個概念有些大,有的人也把系統管理看上最高點,把用戶管理 ;磁碟管理;網路管理;安全都納入這個關健詞之中。這也是有道理 的。因為這么多的管理都是密不可分的,離了哪個都不行。當然還有好多的零活讓我們來做,比如系統優化,內核編譯等。系統管理概念比較大,麻煩事也比較多。以後在各部份一步一步的讓初學Linux的弟兄體驗體驗,可能有的弟兄早就體驗過了,只是不知道他就是在體驗系統管理 。
日誌分析對於我們了解系統運行還是極有幫助的,否則有人攻擊我們的機器都不知道,那不麻煩了?通過分析日誌,我們能得到硬體及各種軟體的運行狀態,以及他們配合的是否正常等。系統中的每個服務都有日誌,這對於我們找出系統運行中出現故障有極大的幫助。有時發現問題比解決問題更難,我相信初學Linux的弟兄慢慢就明白這個道理了。
10.開發:
玩Linux的最高境界,可能就是開發了。現在我還是處於對系統的學習階段,所以不能寫出什麼開發的經驗之談。一想到自己能造出一個發行版自己用用,也是件高興的事。
加油吧。。。。。。弟兄
學習方法:
一、比較法。我喜歡將一些windows、UNIX中的知識、管理工具、思路跟LINUX作一些比較。發掘它們的相同之處和不同之處。如文件系統, LINUX支持哪些文件系統,而常用的UNIX中又有哪些文件系統,不同的文件系統有什麼差異。不同的工作環境中應該怎樣選用不同的文件系統?應該怎樣在可管理性、安全性、性能等方面進行綜合評估它們?如果你一點都說不上的話,我想你應該補補課了。
二、舉一反三法。對任何的命令,我習慣性的就是先弄清楚它到底有那些參數,能做什麼用;跟它相關的命令有哪些,又能做些什麼?;這些命令它到底涉及到哪些系統文件?只有這樣,才能對這個命令稱得上說熟悉,說不定很多你自以為很熟悉的命令能幹很多你意想不到的工作哦!
三、查詢法。我不想對一個自己不知道的問題馬上去問別人。很多時候MAN一下,用google查詢一下,論壇中搜索一下,答案可能就在你的眼前。我發現很多的弟兄沒有養成這種習慣,其實通過你自己查詢來的知識,你可能領會得更深,因為你需要好好的從頭看一下,看看有什麼遺漏的,而不是別人簡單的一就是一的告訴你。
四、交流法。如果對一個問題進行了思考,查詢到了一定的知識,還是解決不了,那麼最直接的方法就是上網問別人了,不恥下問嘛!將你的困難、理解、觀點告訴別人,請別人來幫助你。
3. 如何才能學好linux
來自網路經驗針對如何才能學好linux的網路資料
目前比較學習Linux系統比較火的論壇
談談如何學習Linux操作系統,來自51cto網路資料,參考資料http://ixdba.blog.51cto.com/2895551/569329
真正想學好linux系統,還是要研究linux內核源碼。
為什麼這么說呢?
無論是使用linux裡面的一些命令,還是做linux應用層的開發,其實都是在使用linux內核的功能,但是其實你對linux底層的機制並不了解。長遠來看,其實對你技術的提升不大。
比如:
1. 你天天使用linux里的docker命令,那你知道docker是如何做到這種隔離性的嗎?
2. 你寫linux應用程序,會看到入口是main()函數。那麼,問題來了,為什麼是main()呢?為什麼不是hello()、不是fuck(),不是love()呢?
3. 你寫linux應用程序,也會用write()函數。這個write函數,我們代碼里並沒有實現它,那是誰實現了它?是c庫嗎?有可能。但是如果我是寫磁碟呢?c庫能做到嗎?
顯然不能!還是需要linux內核的功能。
4. 我們知道,在linux里,不同的應用程序可以共享一個動態鏈接庫,這又是怎麼做到的?不是說進程是隔離的嗎?為什麼對動態鏈接庫就不做隔離了?
5. linux應用層調用malloc是直接調用到內核嗎?
很顯然不是! c庫里也有內存管理,c庫里的內存管理單元會向內核批發內存(以page為單位),然後向應用程序零售內存(更小的粒度,可以是int大小,char大小等)
6. linux里進程和線程的共同點和差別究竟是什麼?不要拿教科書里那一套來說教,從代碼里得到的才是真知。
....
問題太多了,難道你不好奇嗎?
如果你不好奇,那很顯然你不太適合做技術,在技術這條路上可能走不遠,應該早日轉行;如果你很好奇,那就從現在開始,研究linux內核吧。
對於這個問題作為一個在linux下開發代碼十幾年的人,忍不住說幾句
任何一門技能的學習,想要學精學透,都要付出巨大的努力,尤其是一些專業性比較強的技能,更需要持之以恆長期不斷的投入大量的精力去學習和實踐,比如linux的學習,就是一門專業性非常強的技能,如何能學好這項技能。
如何才能學好那?
思想上的重視首先要明白自己為什麼要學習linux,學習linux能給自己帶來什麼,也就是說要知道學好linux對自己的重要性。當從思想上認識到一件事對自己的重要性有多大的時候,就會投入多大的精力去做這件事。
行動上的具體
有了思想上的重視,下面就需要具體的行動
(1)從基礎知識學習,打好基本功;任何一門新知識的學習,都要了解它的一些基本內容,基本概念等等,這樣就需要找一本介紹linux的專業書籍,先大致了解一下linux的相關內容,不至於後期學習linux的時候,連一些最基本的專業名稱都搞不懂。
(2)勤學多練,多多思考;linux是一門實用性非常強的技術,基礎理論的學習就是為了應用的更好實現,應用的實現反過來也會使理論的知識更加鞏固;找一套功能比較齊全的開發板,在開發板上實現各種功能,不斷地去實踐,帶著問題去尋找答案,當看著自己設計的功能在開發板上實現,會樂此不彼。
總之,學好 Linux 絕非一朝一夕之事,時間、知識的積累是必不可少的
Linux是一個很大的概念,建議先從簡單的入手,結合你的興趣、工作內容,在某一方面深挖,來張圖介紹Linux的學習升級。
初學入門Linux的話,可以先安裝一個桌面版的Linux虛擬機(Ubuntu、CentOS7等都行),以熟悉常用命令為主,待基本掌握環境後,可以研究一下 內核源碼 及 常用伺服器的搭建,加深理解和應用,下面我簡單介紹一下Linux的學習過程,感興趣的朋友可以嘗試一下:
01 安裝Linux這里建議安裝一個桌面版的Linux虛擬機(Ubuntu、CentOS7等發行版本都行),初學入門的話,如果對Linux完全不熟悉,安裝迷你版會非常不適應,許多功能和包都需要自己適配下載,可以先使用桌面版,不至於完全手足無措,後期熟悉環境後,可以使用無界面版,操作起來也會非常容易:
02 入門Linux
Linux虛擬機安裝好後,就是Linux基礎入門,這里網上教程和資料非常多,像慕課網、菜鳥教程、B站等都有大量優質視頻和文檔,當然,你也可以找一本專業的Linux書籍,一邊學習一邊練習,《 鳥哥的私房菜 》就非常不錯,覆蓋面比較廣,講解的也非常細致,常見的基礎命令和配置等都要熟悉掌握,這些是使用Linux的基礎:
03 深入Linux
Linux基礎熟悉後,就是深入Linux的過程,這里可以學習和研究的東西就非常多了,基礎的Linux應用,包括伺服器搭建、嵌入式開發等,都有非常光明的前景,當然,你也可以研究一下Linux內核,包括內存管理、進程管理、文件系統、驅動等,對於深入理解操作系統來說,可以說是大有裨益:
Linux畢竟只是個操作系統,只要掌握了正確的學習方法,不會有多難。今天咱們就好好看看,Linux到底怎麼學才是正確的學習方法。轉自——馬哥linux運維
一、從命令開始從基礎開始
常常有些朋友一接觸Linux 就是希望構架網站,根本沒有想到要先了解一下Linux 的基礎。這是相當困難的。雖然Linux桌面應用發展很快,但是命令在Linux中依然有很強的生命力。Linux是一個命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平這個原理是不會變的,Linux命令有許多強大的功能:從簡單的磁碟操作、文件存取、到進行復雜的多媒體圖象和流媒體文件的製作。這里筆者把它們中比較重要的和使用頻率最多的命令,按照它們在系統中的作用分成幾個部分介紹給大家,通過這些基礎命令的學習我們可以進一步理解 Linux系統:
安裝和登錄命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
文件處理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
系統管理相關命令: df、 top、 free、 quota 、at、 lp、 adser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
網路操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
系統安全相關命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
二、選擇一本好的Linux書籍
在各個Linux論壇中,我們看到最多的問題往往是某個新手,在安裝或使用linux的過程中遇到一個具體的問題就開始提問,很多都是重復性的問題,甚至有不少人連基本的問題描述都不是很清楚。這說明很多初學linux的人還沒有掌握基本功。怎樣才能快速提高掌握linux的基本功呢? 最有效的方法莫過於學習權威的linux工具書,工具書對於學習者而言是相當重要的。一本錯誤觀念的工具書卻會讓新手整個誤入歧途。目前國內關於 linux的書籍有很多不過精品的不多,筆者強烈建議閱讀《鳥哥的Linux私房菜 基礎篇》,現在出到了第三版。新手最好能夠買一本紙版書來仔細研讀,並認真做好學習筆記。當然,如果習慣看電子書,也可以從這里 下載 PDF電子書。
三 、養成在命令行下工作的習慣
一定要養成在命令行下工作的習慣,要知道X-window只是運行在命令行模式下的一個應用程序。在命令行下學習雖然一開始進度較慢,但是熟悉後,您未來的學習之路將是以指數增加的方式增長的。從網管員來說,命令行實際上就是規則,它總是有效的,同時也是靈活的。即使是通過一條緩慢的數據機線路,它也能操縱幾千公里以外地遠程系統。
四、用Unix思維思考Linux
由於Linux是參照Unix的思想來設計的,理解和掌握它就必須以Unix的思維來進行,而不能以Windows思維。不可否認,windows 在市場上的成功很大一部分在於技術思想的獨到之處。可是這個創新是在面對個人用戶的前提下進行的,而面對著企業級的服務應用,它還是有些力不從心。多年來在計算機操作系統領域一直是二者獨大:unix在伺服器領域,Windows在個人用戶領域。由此可見,用戶需求決定了所採用的操作系統。不管什麼原因,如果要學習Linux,那麼首先要將思維從Windows的「這個小河」 中拖出來,放入Unix的海洋。
五、學習shell
對於Shell(中文名稱殼),習慣Windows的讀者肯定是非常陌生的,因為Windows只有一個「Shell」(如果可以說是Shell的話),那就是Windows自己。用一句話容易理解的解釋就是,shell是用戶輸入命令與系統解釋命令之間的中介。最直觀的說法,一種Shell有一套自己的命令。舉一個容易理解的例子,Linux的標准Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表現出來的。讀者可能會不理解,Windows從命令行「進化」到了圖形界面,那麼Linux現在還使用命令行豈不是一種倒退?
當初我剛剛接觸Linux時就曾有過這種想法。可是後來發現,如果使用圖形界面,那麼分配給應用軟體的資源就少了,在價格昂貴的伺服器上,能夠以較低的硬體配置實現同樣的功能是非常重要的。
下面舉例說明,一台伺服器有1GB內存,假設其中512MB用於處理圖形界面,若要安裝一個需要784MB內存的資料庫軟體,惟一的辦法就是擴大內存。但是如果使用命令行,系統可能只需要64MB內存,其它的內存就可以供資料庫軟體使用了。使用命令行,不僅是內存,而且CPU及硬碟等資源的佔用都要節省很多。所以,作為伺服器使用命令行是優點而不是缺點。既然Shell有這么多優點,就必須要學習它。
簡單來說就是:興趣,堅持,方法。
興趣第一對於任何事情,興趣在很大程度上會影響你做這件事的結果。去做一件自己很感興趣的事情,和做一件自己本來毫無興趣卻由於某種原因而不得不做的事情,其結果往往是天地之別。究其緣由,無非是對於自己感興趣的事情,是以一種享受其中樂趣的心態去做,在不自覺中就會投入更多的心思在上面,也會更加專注,更容易一直堅持下去。而對於毫無興趣的事情,往往是迫於某種壓力才不得不做,心裡或多或少會有一定排斥拒絕,甚至會有煎熬的感覺,其結果也可想而知。
對於程序開發,也是一樣的。工作中,同樣是程序員,卻經常會有兩種不同的人。一種對程序開發真的是很感興趣,一天不寫代碼不看代碼就如坐針氈,感覺這一天總缺少點什麼,往往這種人才能成為技術人口中的大神。另外一種人,則是相反,看代碼寫代碼完全是因為完成任務而不得不做,處理問題時能靠嘴忽悠過去的,絕不會看一眼代碼,所以這種人往往技術平庸。當然,這只是從技術角度說,如果單純看收入的話,第一種人卻不見得比第二種人收入高。
所以,首先要確定自己是否對程序開發感興趣,如果沒有興趣,那就自然不必繼續下去了,完全可以換一個職業選擇。然後再選擇一個自己最感興趣的方向,如內核開發,驅動開發,應用開發等等,選定方向後由淺入深,循序漸進。
持之以恆在互聯網迅猛發展的今天,我們處在一個知識迅速爆發和更新更新時代,每一天都有各種各樣的新事物層出不窮,當然也會伴隨著各種老的舊的東西消失。計算機技術更是如此,從編程語言到開發工具,從設計模式到系統框架,每一天每個領域都會有新的技術出現,從也會有舊的技術被淘汰被丟棄被遺忘。
這就意味著,從成為程序員的那一天開始,就不可能停止學習的腳步,不得不面對各種技術的更新換代,因此,必須要持續學習,及時更新自己的知識結構,以適應各種業務需求的變化,否則,可能就不得不面對被淘汰的結果。
找到適合自己的學習方法就像看電影一樣,同一部電影,有的人覺得精彩,有的人覺得無趣。每個人的習慣、個性、思維、背景、基礎不同,學習的方法也不同,沒有什麼放之皆準的方法,適合自己的才是最好的。
對於入門,找到一本自己能看得懂適合自己的書。很多別人推薦的堪稱聖經的經典書籍,不妨嘗試一下,看自己是否能夠很容易的理解和消化。如果實在看不懂,果斷換一本,切忌過於勉強。剛入門時,如果長時間處於一種雲里霧里的感覺,往往會對自己信心造成打擊,繼而一點點消耗掉繼續學下去的興趣。很多聖經級的書籍往往適合在有一定基礎之後再細細品讀的,卻並非入門首選。
入門之後就是逐步深入了。一般來說,在實際項目中進行學習是效果最好的。做項目過程中往往能夠鞏固已經學到的技能,同時發現自己的知識盲點,進而消滅盲點。
此外,多讀代碼,多寫代碼。
最後的最後, 珍惜你現在的每一根頭發。
linux系列有兩種發行版本
1).Red
Hat系,包括RHEL、fedora、centos等
2).Debian系,包括Debian、Ubuntu、Mint等
想要學習的話如果個人學習,推薦使用Ubuntu。如果是工作的話,則使用centos學習
1.學習Linux,首先就是安裝Linux系統,通過鏡像安裝,這個過程可以先大概的了解一下linux的啟動過程,對一些概念有個大致的印象
2.在安裝好的系統之上,學習一些基本命令的操作,比如ls . 列出當前文件夾下的子文件和子目錄,cd /root 切換到root的目錄下,top命令查看一些進程的cpu,內存等資源的使用情況,ps命令同樣也可以查看進程的內存等資源使用情況,pwd查看當前所在的路徑等等,將這一些命令熟練的掌握
3.在掌握了linux的一些基本命令之後,那麼可以進行一些服務的安裝搭建練習,比如在Linux下安裝搭建DNS伺服器,搭建nginx伺服器等等
4.進階階段的話,可以嘗試進行內核參數的調優,比如tcp關閉連接之後保持高速通道,擴大linux系統的最大句柄打開數之類的內核參數的優化,sysctl -a可以查看目前已經載入的內核參數
5.學會了造句子,那麼之後就可以寫作文了。同理學會了linux的命令之後,那麼可以學習一下shell的基本語句,awk sed的學習,用shell實現一些特定功能的腳本,比如可以通過cat /proc/cpuinfo加上awk命令來實現對cpu相關信息的統計等
如果你在Linux上是一個小白請看下面的回答~
想學好Linux,先問自己幾個問題。
1. 你對計算機感興趣嗎?
2. 為什麼學習Linux(他能給你帶來什麼價值,這個價值點是否可以支持你一直堅持下去)
3.你每天可以在工作生活之餘或者大學課余抽出多少時間去學習(任何的技能都是需要時間去練習+時間才能掌握的)
如果這三個問題的答案都是肯定的,那麼請看下文:
我也是一個從0技術基礎的小白開始學習的
推薦你一個教程:【菜鳥教程】
http://www.runoob.com/linux/linux-tutorial.html
一定要有耐心、有恆心的堅持學完,這樣你對Linux才能有一定的理解
學習的中間需要您自己不斷的實操,自己去敲命令,去安裝,去驗證