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