{eval=Array;=+count(Array);}
真正想學(xué)好linux系統(tǒng),還是要研究linux內(nèi)核源碼。
為什么這么說呢?
無論是使用linux里面的一些命令,還是做linux應(yīng)用層的開發(fā),其實都是在使用linux內(nèi)核的功能,但是其實你對linux底層的機制并不了解。長遠(yuǎn)來看,其實對你技術(shù)的提升不大。
比如:
1. 你天天使用linux里的docker命令,那你知道docker是如何做到這種隔離性的嗎?
2. 你寫linux應(yīng)用程序,會看到入口是main()函數(shù)。那么,問題來了,為什么是main()呢?為什么不是hello()、不是fuck(),不是love()呢?
3. 你寫linux應(yīng)用程序,也會用write()函數(shù)。這個write函數(shù),我們代碼里并沒有實現(xiàn)它,那是誰實現(xiàn)了它?是c庫嗎?有可能。但是如果我是寫磁盤呢?c庫能做到嗎?
顯然不能!還是需要linux內(nèi)核的功能。
4. 我們知道,在linux里,不同的應(yīng)用程序可以共享一個動態(tài)鏈接庫,這又是怎么做到的?不是說進程是隔離的嗎?為什么對動態(tài)鏈接庫就不做隔離了?
5. linux應(yīng)用層調(diào)用malloc是直接調(diào)用到內(nèi)核嗎?
很顯然不是! c庫里也有內(nèi)存管理,c庫里的內(nèi)存管理單元會向內(nèi)核批發(fā)內(nèi)存(以page為單位),然后向應(yīng)用程序零售內(nèi)存(更小的粒度,可以是int大小,char大小等)
6. linux里進程和線程的共同點和差別究竟是什么?不要拿教科書里那一套來說教,從代碼里得到的才是真知。
....
問題太多了,難道你不好奇嗎?
如果你不好奇,那很顯然你不太適合做技術(shù),在技術(shù)這條路上可能走不遠(yuǎn),應(yīng)該早日轉(zhuǎn)行;如果你很好奇,那就從現(xiàn)在開始,研究linux內(nèi)核吧。
歡迎關(guān)注"技術(shù)簡說",帶你由淺入深、一步一步學(xué)習(xí)linux內(nèi)核源碼。
初學(xué)入門Linux的話,可以先安裝一個桌面版的Linux虛擬機(Ubuntu、CentOS7等都行),以熟悉常用命令為主,待基本掌握環(huán)境后,可以研究一下內(nèi)核源碼及常用服務(wù)器的搭建,加深理解和應(yīng)用,下面我簡單介紹一下Linux的學(xué)習(xí)過程,感興趣的朋友可以嘗試一下:
這里建議安裝一個桌面版的Linux虛擬機(Ubuntu、CentOS7等發(fā)行版本都行),初學(xué)入門的話,如果對Linux完全不熟悉,安裝迷你版會非常不適應(yīng),許多功能和包都需要自己適配下載,可以先使用桌面版,不至于完全手足無措,后期熟悉環(huán)境后,可以使用無界面版,操作起來也會非常容易:
Linux虛擬機安裝好后,就是Linux基礎(chǔ)入門,這里網(wǎng)上教程和資料非常多,像慕課網(wǎng)、菜鳥教程、B站等都有大量優(yōu)質(zhì)視頻和文檔,當(dāng)然,你也可以找一本專業(yè)的Linux書籍,一邊學(xué)習(xí)一邊練習(xí),《鳥哥的私房菜》就非常不錯,覆蓋面比較廣,講解的也非常細(xì)致,常見的基礎(chǔ)命令和配置等都要熟悉掌握,這些是使用Linux的基礎(chǔ):
Linux基礎(chǔ)熟悉后,就是深入Linux的過程,這里可以學(xué)習(xí)和研究的東西就非常多了,基礎(chǔ)的Linux應(yīng)用,包括服務(wù)器搭建、嵌入式開發(fā)等,都有非常光明的前景,當(dāng)然,你也可以研究一下Linux內(nèi)核,包括內(nèi)存管理、進程管理、文件系統(tǒng)、驅(qū)動等,對于深入理解操作系統(tǒng)來說,可以說是大有裨益:
目前就分享這么多吧,Linux入門來說,其實非常容易,只要你多用多練,很快就能掌握的,后期深入Linux,可以研究一下常見服務(wù)器的搭建以及內(nèi)核源碼,對于自身發(fā)展來說,非常有益,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對你有所幫助吧,也歡迎大家評論、留言進行補充。
Linux畢竟只是個操作系統(tǒng),只要掌握了正確的學(xué)習(xí)方法,不會有多難。今天咱們就好好看看,Linux到底怎么學(xué)才是正確的學(xué)習(xí)方法。轉(zhuǎn)自——馬哥linux運維
一、從命令開始從基礎(chǔ)開始
常常有些朋友一接觸Linux 就是希望構(gòu)架網(wǎng)站,根本沒有想到要先了解一下Linux 的基礎(chǔ)。這是相當(dāng)困難的。雖然Linux桌面應(yīng)用發(fā)展很快,但是命令在Linux中依然有很強的生命力。Linux是一個命令行組成的操作系統(tǒng),精髓在命令行,無論圖形界面發(fā)展到什么水平這個原理是不會變的,Linux命令有許多強大的功能:從簡單的磁盤操作、文件存取、到進行復(fù)雜的多媒體圖象和流媒體文件的制作。這里筆者把它們中比較重要的和使用頻率最多的命令,按照它們在系統(tǒng)中的作用分成幾個部分介紹給大家,通過這些基礎(chǔ)命令的學(xué)習(xí)我們可以進一步理解 Linux系統(tǒng):
●安裝和登錄命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
●文件處理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
●系統(tǒng)管理相關(guān)命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
●網(wǎng)絡(luò)操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
●系統(tǒng)安全相關(guān)命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
二、選擇一本好的Linux書籍
在各個Linux論壇中,我們看到最多的問題往往是某個新手,在安裝或使用linux的過程中遇到一個具體的問題就開始提問,很多都是重復(fù)性的問題,甚至有不少人連基本的問題描述都不是很清楚。這說明很多初學(xué)linux的人還沒有掌握基本功。怎樣才能快速提高掌握linux的基本功呢? 最有效的方法莫過于學(xué)習(xí)權(quán)威的linux工具書,工具書對于學(xué)習(xí)者而言是相當(dāng)重要的。一本錯誤觀念的工具書卻會讓新手整個誤入歧途。目前國內(nèi)關(guān)于 linux的書籍有很多不過精品的不多,筆者強烈建議閱讀《鳥哥的Linux私房菜 基礎(chǔ)篇》,現(xiàn)在出到了第三版。新手最好能夠買一本紙版書來仔細(xì)研讀,并認(rèn)真做好學(xué)習(xí)筆記。當(dāng)然,如果習(xí)慣看電子書,也可以從這里 下載 PDF電子書。
三 、養(yǎng)成在命令行下工作的習(xí)慣
一定要養(yǎng)成在命令行下工作的習(xí)慣,要知道X-window只是運行在命令行模式下的一個應(yīng)用程序。在命令行下學(xué)習(xí)雖然一開始進度較慢,但是熟悉后,您未來的學(xué)習(xí)之路將是以指數(shù)增加的方式增長的。從網(wǎng)管員來說,命令行實際上就是規(guī)則,它總是有效的,同時也是靈活的。即使是通過一條緩慢的調(diào)制解調(diào)器線路,它也能操縱幾千公里以外地遠(yuǎn)程系統(tǒng)。
四、用Unix思維思考Linux
由于Linux是參照Unix的思想來設(shè)計的,理解和掌握它就必須以Unix的思維來進行,而不能以Windows思維。不可否認(rèn),windows 在市場上的成功很大一部分在于技術(shù)思想的獨到之處??墒沁@個創(chuàng)新是在面對個人用戶的前提下進行的,而面對著企業(yè)級的服務(wù)應(yīng)用,它還是有些力不從心。多年來在計算機操作系統(tǒng)領(lǐng)域一直是二者獨大:unix在服務(wù)器領(lǐng)域,Windows在個人用戶領(lǐng)域。由此可見,用戶需求決定了所采用的操作系統(tǒng)。不管什么原因,如果要學(xué)習(xí)Linux,那么首先要將思維從Windows的“這個小河” 中拖出來,放入Unix的海洋。
五、學(xué)習(xí)shell
對于Shell(中文名稱殼),習(xí)慣Windows的讀者肯定是非常陌生的,因為Windows只有一個“Shell”(如果可以說是Shell的話),那就是Windows自己。用一句話容易理解的解釋就是,shell是用戶輸入命令與系統(tǒng)解釋命令之間的中介。最直觀的說法,一種Shell有一套自己的命令。舉一個容易理解的例子,Linux的標(biāo)準(zhǔn)Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表現(xiàn)出來的。讀者可能會不理解,Windows從命令行“進化”到了圖形界面,那么Linux現(xiàn)在還使用命令行豈不是一種倒退?
當(dāng)初我剛剛接觸Linux時就曾有過這種想法。可是后來發(fā)現(xiàn),如果使用圖形界面,那么分配給應(yīng)用軟件的資源就少了,在價格昂貴的服務(wù)器上,能夠以較低的硬件配置實現(xiàn)同樣的功能是非常重要的。
下面舉例說明,一臺服務(wù)器有1GB內(nèi)存,假設(shè)其中512MB用于處理圖形界面,若要安裝一個需要784MB內(nèi)存的數(shù)據(jù)庫軟件,惟一的辦法就是擴大內(nèi)存。但是如果使用命令行,系統(tǒng)可能只需要64MB內(nèi)存,其它的內(nèi)存就可以供數(shù)據(jù)庫軟件使用了。使用命令行,不僅是內(nèi)存,而且CPU及硬盤等資源的占用都要節(jié)省很多。所以,作為服務(wù)器使用命令行是優(yōu)點而不是缺點。既然Shell有這么多優(yōu)點,就必須要學(xué)習(xí)它。
簡單來說就是:興趣,堅持,方法。
對于任何事情,興趣在很大程度上會影響你做這件事的結(jié)果。去做一件自己很感興趣的事情,和做一件自己本來毫無興趣卻由于某種原因而不得不做的事情,其結(jié)果往往是天地之別。究其緣由,無非是對于自己感興趣的事情,是以一種享受其中樂趣的心態(tài)去做,在不自覺中就會投入更多的心思在上面,也會更加專注,更容易一直堅持下去。而對于毫無興趣的事情,往往是迫于某種壓力才不得不做,心里或多或少會有一定排斥拒絕,甚至?xí)屑灏镜母杏X,其結(jié)果也可想而知。
對于程序開發(fā),也是一樣的。工作中,同樣是程序員,卻經(jīng)常會有兩種不同的人。一種對程序開發(fā)真的是很感興趣,一天不寫代碼不看代碼就如坐針氈,感覺這一天總?cè)鄙冱c什么,往往這種人才能成為技術(shù)人口中的大神。另外一種人,則是相反,看代碼寫代碼完全是因為完成任務(wù)而不得不做,處理問題時能靠嘴忽悠過去的,絕不會看一眼代碼,所以這種人往往技術(shù)平庸。當(dāng)然,這只是從技術(shù)角度說,如果單純看收入的話,第一種人卻不見得比第二種人收入高。
所以,首先要確定自己是否對程序開發(fā)感興趣,如果沒有興趣,那就自然不必繼續(xù)下去了,完全可以換一個職業(yè)選擇。然后再選擇一個自己最感興趣的方向,如內(nèi)核開發(fā),驅(qū)動開發(fā),應(yīng)用開發(fā)等等,選定方向后由淺入深,循序漸進。
在互聯(lián)網(wǎng)迅猛發(fā)展的今天,我們處在一個知識迅速爆發(fā)和更新更新時代,每一天都有各種各樣的新事物層出不窮,當(dāng)然也會伴隨著各種老的舊的東西消失。計算機技術(shù)更是如此,從編程語言到開發(fā)工具,從設(shè)計模式到系統(tǒng)框架,每一天每個領(lǐng)域都會有新的技術(shù)出現(xiàn),從也會有舊的技術(shù)被淘汰被丟棄被遺忘。
這就意味著,從成為程序員的那一天開始,就不可能停止學(xué)習(xí)的腳步,不得不面對各種技術(shù)的更新?lián)Q代,因此,必須要持續(xù)學(xué)習(xí),及時更新自己的知識結(jié)構(gòu),以適應(yīng)各種業(yè)務(wù)需求的變化,否則,可能就不得不面對被淘汰的結(jié)果。
就像看電影一樣,同一部電影,有的人覺得精彩,有的人覺得無趣。每個人的習(xí)慣、個性、思維、背景、基礎(chǔ)不同,學(xué)習(xí)的方法也不同,沒有什么放之皆準(zhǔn)的方法,適合自己的才是最好的。
對于入門,找到一本自己能看得懂適合自己的書。很多別人推薦的堪稱圣經(jīng)的經(jīng)典書籍,不妨嘗試一下,看自己是否能夠很容易的理解和消化。如果實在看不懂,果斷換一本,切忌過于勉強。剛?cè)腴T時,如果長時間處于一種云里霧里的感覺,往往會對自己信心造成打擊,繼而一點點消耗掉繼續(xù)學(xué)下去的興趣。很多圣經(jīng)級的書籍往往適合在有一定基礎(chǔ)之后再細(xì)細(xì)品讀的,卻并非入門首選。
入門之后就是逐步深入了。一般來說,在實際項目中進行學(xué)習(xí)是效果最好的。做項目過程中往往能夠鞏固已經(jīng)學(xué)到的技能,同時發(fā)現(xiàn)自己的知識盲點,進而消滅盲點。
此外,多讀代碼,多寫代碼。
如果你在Linux上是一個小白請看下面的回答~
想學(xué)好Linux,先問自己幾個問題。
1. 你對計算機感興趣嗎?
2. 為什么學(xué)習(xí)Linux(他能給你帶來什么價值,這個價值點是否可以支持你一直堅持下去)
3.你每天可以在工作生活之余或者大學(xué)課余抽出多少時間去學(xué)習(xí)(任何的技能都是需要時間去練習(xí)+時間才能掌握的)
如果這三個問題的答案都是肯定的,那么請看下文:
我也是一個從0技術(shù)基礎(chǔ)的小白開始學(xué)習(xí)的
推薦你一個教程:【菜鳥教程】
http://www.runoob.com/linux/linux-tutorial.html
一定要有耐心、有恒心的堅持學(xué)完,這樣你對Linux才能有一定的理解
學(xué)習(xí)的中間需要您自己不斷的實操,自己去敲命令,去安裝,去驗證
linux系列有兩種發(fā)行版本
1).Red
Hat系,包括RHEL、fedora、centos等
2).Debian系,包括Debian、Ubuntu、Mint等
想要學(xué)習(xí)的話如果個人學(xué)習(xí),推薦使用Ubuntu。如果是工作的話,則使用centos學(xué)習(xí)
1.學(xué)習(xí)Linux,首先就是安裝Linux系統(tǒng),通過鏡像安裝,這個過程可以先大概的了解一下linux的啟動過程,對一些概念有個大致的印象
2.在安裝好的系統(tǒng)之上,學(xué)習(xí)一些基本命令的操作,比如ls . 列出當(dāng)前文件夾下的子文件和子目錄,cd /root 切換到root的目錄下,top命令查看一些進程的cpu,內(nèi)存等資源的使用情況,ps命令同樣也可以查看進程的內(nèi)存等資源使用情況,pwd查看當(dāng)前所在的路徑等等,將這一些命令熟練的掌握
3.在掌握了linux的一些基本命令之后,那么可以進行一些服務(wù)的安裝搭建練習(xí),比如在Linux下安裝搭建DNS服務(wù)器,搭建nginx服務(wù)器等等
4.進階階段的話,可以嘗試進行內(nèi)核參數(shù)的調(diào)優(yōu),比如tcp關(guān)閉連接之后保持高速通道,擴大linux系統(tǒng)的最大句柄打開數(shù)之類的內(nèi)核參數(shù)的優(yōu)化,sysctl -a可以查看目前已經(jīng)加載的內(nèi)核參數(shù)
5.學(xué)會了造句子,那么之后就可以寫作文了。同理學(xué)會了linux的命令之后,那么可以學(xué)習(xí)一下shell的基本語句,awk sed的學(xué)習(xí),用shell實現(xiàn)一些特定功能的腳本,比如可以通過cat /proc/cpuinfo加上awk命令來實現(xiàn)對cpu相關(guān)信息的統(tǒng)計等
這臺linux主機可以是你公司的開發(fā)環(huán)境服務(wù)、可以是你本機生產(chǎn)力操作系統(tǒng)、可以是你的虛擬機。
擁有一個linux操作主機,且這臺主機是能夠讓你隨意操作命令的主機,這樣你才能大膽地敲任何命令,不會在學(xué)習(xí)過程中無所畏懼。
可以學(xué)習(xí)在linux上安裝mysql、nginx、tomcat 這些常用開發(fā)軟件。
安裝過程包含了各種linux的文件系統(tǒng)操作命令,過程中你會遇到各種問題,會學(xué)會如何下載文件、如何解壓文件、如何執(zhí)行編譯,如何執(zhí)行安裝
、如何使用yum、apt、apk 等命令,以及學(xué)會如何查看錯誤日志。
從0到1的購買1~2本linux操作系統(tǒng)相關(guān)的書籍,系統(tǒng)性地了解linux,這有利于你后續(xù)對至少的融會貫通,舉一反三。
只有融會貫通后才能后靈活的的組合使用各種命令,以及解決更復(fù)雜的問題,因為有的問題不是直接能從互聯(lián)網(wǎng)上找到直接的答案的,需要加入自己的理解和判斷,通過系統(tǒng)給出的反饋一步一步認(rèn)真分析才能找到蛛絲馬跡,最終解決問題。
作為1個過來人來說,有幾點可以分享給你:
1.先清除的了解你的發(fā)展方向是什么,Linux運維工程師其實是一個綜合性的技術(shù)崗位(網(wǎng)絡(luò)、系統(tǒng)、開發(fā)、數(shù)據(jù)庫、安全、存儲等等
2.作為一個剛?cè)胄械男氯藖碚f,買書自學(xué)無疑是很多人的首選,但最大的一個問題就是書買了,就在家中落灰了,能完完整整的把書全部看下來的人寥寥無幾,想起來了,翻看幾頁,想不起來就拋之腦后了,缺乏自制力的人不太適合這種方法,即便看完了書,你沒有參與過真實的項目,報錯都不知道怎么搞定,那也是沒有什么意義。
3.不建議你盲目的選擇培訓(xùn)機構(gòu),線下學(xué)習(xí)的話大多都是脫產(chǎn)學(xué)習(xí)的,就是不能工作,全天學(xué)習(xí)差不多四五個月的樣子,這種情況而言,如果你的經(jīng)濟能力夠強大也有這個時間,那建議你多對比一些再做決定,如果經(jīng)濟上比較拮據(jù),建議你先選擇在網(wǎng)上觀看一些基礎(chǔ)的視頻,把基礎(chǔ)部分的根基打穩(wěn)了,再考慮該如何選擇。
1.先安裝一個Linux
2.根據(jù)各個知識點一點一點練習(xí)
3.整理知識點
下面是我整個的Linux知識點和入門思維導(dǎo)圖
https://www.toutiao.com/i6856971506786763276/
我說說自己的經(jīng)歷吧。
很小時候家里剛有電腦的時候還是XP時代(剛開始有Vista),我不知道那里看到了一本介紹各種系統(tǒng)安裝的電子書,里面包括了win95,win98,winXP,Red Hat,紅旗等等系統(tǒng)的安裝教程。
當(dāng)時就很感興趣,就經(jīng)常拿老爸的2G手機搜這些系統(tǒng)相關(guān)的資料,那時候還找到了Tiny Core Linux,號稱全世界最小的Linux。在這之后就對Linux很感興趣,玩過號稱最好看的openSUSE,玩過感覺最簡潔的Fedora,還有最容易上手的Ubuntu,當(dāng)然還有國產(chǎn)的深度系統(tǒng)、StartOS,臺式機玩Android X86,還廢寢忘食爬了幾個月的遠(yuǎn)景論壇,搞黑蘋果。確實興趣是最好的老師,在這個過程中自己慢慢學(xué)了很多Linux知識。
后來慢慢往碼農(nóng)方向發(fā)展,慢慢熟悉shell,學(xué)習(xí)Linux更加深入的應(yīng)用,學(xué)習(xí)搭建服務(wù)器,學(xué)習(xí)常用的軟件,工具使用,慢慢覺得Linux真的是個偉大的操作系統(tǒng)。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答