爲何要學Linux 1.不少服務器使用的是Linux系統,而做爲服務器應用程序的開發者或者維護者,若是不瞭解Linux的基本使用,該如何進行開發或者維護呢? 2.使用標準C/C++ 編寫運行在Linux上的應用程序 3.編寫部署在Linux上的應用程序,如Python,Java web,Go 服務程序 4.一探究竟。衆所周知,Linux開源,windows並不是如此。 Linux學習方向 1.運維,維護Linux服務器.運維Linux主要須要學會對服務器的基本部署,監控,配置,管理等等, 你能夠認爲,這些機器歸你管了 2.應用開發,開發Linux應用程序.應用開發天然是須要學習如何開發在Linux上運行的應用程序,如何定位Linux應用程序問題等等. 3.底層開發. 底層開發須要瞭解uboot,文件系統,內核等底層相關內容,主要工做可能涉及文件系統裁剪,驅動開發,內核模塊定製(如內存管理,進程調度)等等 Linux應用開發學什麼 1.基本使用 2.開發調試 3.系統認識 怎麼學? 第一階段,能夠先定個小目標,例如一段時間內學會在Linux下進行你的平常活動(玩遊戲就算了),例如編寫文檔,看視頻等等。同時建議: 選擇主流的發行版,如ubuntu,centos等,遇到問題時比較容易解決 在window下安裝虛擬機,這樣Linux環境就隨你折騰了 在這期間,你可能須要瞭解 使用apt-get或者yum安裝或卸載軟件 使用tar,unzip,zip,gz等解壓縮命令安裝包 瞭解運行環境,學會如何執行命令 第二階段也是主要的階段,這一階段要學習的東西很是多,可能是命令的學習,這裏一樣能夠參考《鳥哥的Linux私房菜》。不過初期階段建議抱着一個目的去學習,就是如何在Linux寫一個完整的程序,爲了達到這個目的你須要學習 cd touch cp mv rm ls,find,切換目錄,建立,複製,移動,刪除,查看,查找等等 vi/vim 編寫代碼,這裏有一個在線練習網站 https://www.openvim.com/s gcc編譯代碼,後期可能須要學習makefile,cmake等構建工具 版本管理,git也是當前必備的一個工具了,學習資料推薦pro git或者官方git教程 gdb調試,能夠參考《GDB調試指南》 問題定位,除了觀察最基本的打印以外,還須要知道,如何查看進程信息(ps),如何查看網絡鏈接信息(ss,netstat),如何強制中止進程(kill -9)如何查看進程文件打開狀況(lsof),如何多種姿式查看文本文件(cat,tail,more,less)等等。 腳本學習,學習Linux,就不得不學習shell腳本了,它在不少時候能毫無抱怨地幫你作事,前提是你會調教。《Linux命令行與shell腳本編程大全》也是調教教程之一。這裏也有一些《必備的shell知識》 這個過程涉及到的命令很是多,可是不建議每個都去細學,首先知道有這麼一個命令便可,而後須要的時候可以快速找到用法,如經過man命令查看手冊。總之,記住你的目標就是流暢地進行開發調試,而在達成這個目標地過程當中,你本身天然會慢慢接觸不少東西。 可是有必要說明的是,開發Linux應用程序並不必定要在Linux下編寫代碼,你能夠選擇利用samba等工具在windows和linux之間共享文件,而後再在windows下熟悉的工具中或者你認爲比較強大合適的工具中編寫代碼,在Linux下進行編譯調試便可。固然你也能夠選擇Linux下的IDE,或者將vim調教一下也是能夠的。 第三階段要求是比較高的,應該學習過操做系統的相關課程(如,《現代操做系統》,《操做系統原理》等),而後你能夠經過諸如《Linux內核設計與實現》,《深刻Linux內核架構》,《深刻理解Linux內核》等書籍進行相關概念學習,也能夠經過閱讀源碼進行深刻學習,最終,你須要瞭解堆和棧,內存管理,進程調度,虛擬內存,文件系統等相關知識。固然相關命令學習也必不可少,例如readelf,nm,ipcs,iostat,objdump,free,chrt,pmap,uptime,top,pidstat等。linux