一.為什么要學linux? 當然最重要是愛好和興趣!如果你沒必要學,或者根本不喜歡,請不要浪費時間,你學也學不好! 二.起步 你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix 。 問題1:版本的選擇 北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux 開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看 ,無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。 對于初學linux的人來說,建議使用redhat,原因如下: 1)現在很多書都是以redhat為例講的,為了與書本協調一致 。 2)周圍的人都用redhat,交流比較方便 。 3)redhat應用范圍廣,有典型性和代表性 。 4)它易于使用和安裝,我們沒有必要把時間浪費在“裝系統”上 而應集中精力學習最有用的東西。 //注:現在覺得RH很死板,AS,ES等用在服務器上或許不錯, Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮 。 如果你并不打算深入學習linux,而是有諸如適應北京市政府辦公平臺遷移到 linux上這種需要,那么中軟,紅旗等中文linux是不錯的選擇 。 強烈建議:自己親自動手把linux裝到你的硬盤上, 你必須學會獨立安裝linux系統的技能,對于現在的版本來說,其實跟裝WinXP一樣簡單 。 從此現在開始,請不要以windows的工作方式來考慮問題, 應該嘗試挖掘linux身上的“天才unix”的氣質。 三.進階 掌握至少50個以上的常用命令 理解shell管道"|",文件流重定向">"及追加">>"等 熟悉Gnome/KDE等X-windows桌面環境操作 掌握.tgz.rpm.biz等軟件包的常用安裝方法 學習添加外設,安裝設備驅動程序(比如modem) 熟悉Grub/Lilo引導器及簡單的修復操作 熟悉系統固有目錄的名稱及公用 學會用mount命令訪問其他文件系統 了解vi,gcc,gdb等常用編輯器,編譯器,調試器 學習linux環境下的簡單組網 建議:買一本不需要太厚的linux教材,大致可以滿足要求 。 //現在的書越來越多了,還帶很多圖,比以前好學多了 四.高級應用 澄清一些概念: linux的普通操作與真正的系統管理不能相提并論,后者需要很多知識 。 我個人認為比較重要的幾種linux語言 : 1.英語 即使你不學linux,也強烈建議你學好英文[U.S.english] 因為實質上計算機語言就是英文和字符,所謂的多國語言只是外部包裝 你必須能無障礙的閱讀大量的英文技術文檔 在搜索引擎找到的英文網站和網頁中熟練的檢索 最好能有用英文直接交流的能力, 擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距 。 2.shell[sed/awk] shell是命令解釋器,是內核與用戶界面交流通道,shell寫的小腳本有點類似于win下的.bat 但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell 幾十行就能代替完成工作,因為shell的工作方式建立在系統已有的眾多應用程序之上 這也是CS中的一個重要思想。 此外,shell可以實現工作自動化,這個概念也比較重要 sed,awk用來處理文本,歷來很常用 3.Perl/PHP 漂亮的腳本, CGI的首選,比ASP好,應用面很廣 。 4.C/C++ C、C++是linux/unix的核心語言,系統代碼都是C寫的 。 5.ASM 系統底層及內核,硬件,設備驅動程序,嵌入式開發都需要 。 //走核心路線的話,才c/c++,asm最重要 6.Java,Python,Tcl,XML (系統管理篇 ) 在熟悉linux的基礎上還需要掌握至少一種unix 首推Solaris,其次是FreeBSD 比如運營級系統一般是Solaris+Oracle/DB2之類的 apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind 等各種應用服務器的構架及電子商務的應用 熟悉TCP/IP協議族,學習諸如apache+php+proftp+mysql+quota的實現以及大型局域網,分布式集群等各種企業級應用解決方案 。 熟悉多用戶管理,數據庫管理,文件系統,邏輯存儲管理,日志分析,備份與災難數據修復系統補丁,內核升級,以及在此基礎上的防火墻構架等以保障系統安全在內的各種系統管理技能 。 個人覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統管理員 。 各種基于linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內搜索引擎尋找最新文檔,以避免錯誤和漏洞 。 有幾本介紹技術大全和技術內幕的圖書,都很不錯。 深入學習linux 個人理解的讀linux內核需要的基礎: 在此之前,希望先把應用層的東西學一下,那樣會比較好理解 。 1.C 如果學過潭浩強的大學教科書(除了編幾個數學模型好像什么也做不了的那種), 建議再看一下 《The C Programming Language》Second Edition這本圣經 。 /*如果想學緩沖區溢出,這點C的功力可能是不夠的*/ 還有,反正經典書看多了是沒有壞處的 。 2.asm (AT&T語法,保護模式) 保護模式下的比較復雜,基本上每本講內核的書都會有介紹 。 有80x86 Intel語法的基礎就行, 有興趣可以看看Intel的官方網站。 3.數據結構(離散數學) 計算機專業的核心課程,重要性我就不說了 。 4.操作系統原理 看懂這個再去讀linux吧 。 5.微機原理/組成原理(數字電路) 底層直接和硬件打交道,所以這個也要學。 6.了解linux/unix 至少你要會操作吧,了解unix的API 。 7.軟件工程/編譯原理 這方面的經典書去百度上搜到很多 ,APUE這種書不適合初學者,還是先看看UPE之類的吧 。 APUE 《advanced programming in the unix environment》 《unix環境高級編程》 作者:W.Richard.Stevens共有6本經典書, 尊為“圣經” 他的書為全世界黑客所拜讀! UPE:《unix programming environment》 《unix編程環境》比較適合初學者的,深入淺出, 其中有一些比較重要的思想 。 另外,介紹linux下應用層編程的書也有很多,比如 redhat、redflag出的書........... 經典書還有很多很多: 操作系統:設計與實現 //交大的考研參考書目,講Minix的 unix操作系統設計 BSD操作系統設計與實現 昂萊氏unix源代碼分析 understanding the linux kernel (2nd)深入理解linux內核 linux設備驅動程序 (2nd) linux內核源代碼情景分析 保護方式下的80386及其編程 想要了解嵌入式、物聯網相關技術的可以聯系宋工企鵝號三五二四六五九零八八 Tel:173--1795--1908 免費試聽C語言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。 想學習的你和我聯系預約就可以免費聽課了。 |