請問我該注重學習Linux哪個方面?

我是電氣專業大二學生,C語言入門,過了二級。對無人機感興趣,這也與我的專業有一定關係,而且我也對編程比較感興趣。在網上看到了一個新聞發現Linux與無人機有關聯。無人機要開源 Linux Foundation推Dronecode項目_因為我知道Linux博大精深,專業課任務也比較重,所以我想問一下我該注重學習哪一方面?希望能有知友為我指點迷津,不勝感激 。


(第一次見使用計算機二級作為自己技術水平的)

投國內無人機公司簡歷,HR及相關人員會告訴你需要哪方面積累,以及二級的技術水平。

#興趣是最好的老師,祝你成功!


edX上的Introduction to Linux課,2015年1月5日開課,由Linux基金會提供,值得關注。還可以捐99刀掙個證書。


我覺得目前的答案說的都不對,他們都太注重linux了。但是如果認真看了這個project,就會發現linux foundation只是推廣和管理這個項目,本質上只是提供了一個平台,集成了已經成熟的開發工具,可以加速DIY無人機的開發。

說白了,跟linux關係不大,你們扯什麼伺服器,運維,還安裝各種開發版本的,到底有沒有看過這個project啊。。。。

根據題主的描述,你可能想在兩個方面發展:

  1. 參與開發這個項目
  2. 使用這個項目,開發無人機

然後根據題主的基礎,針對以上任何一個方面,需要學習的項目如下:

  1. 紮實的C/C++基礎,沒有這個紮實的基礎,很難參與進這個項目
  2. 紮實的數據結構基礎,配合1,起碼最基本的幾個數據結構要爛熟於心
  3. 英文交流能力,要參與開發這個項目,你就得看英文文檔,進mailing list,跟其他開發者合作交流。想使用這個項目,成為受益者,你還得會英文,我估摸著沒人會寫個中文的使用手冊啥的。

針對第一個方面,你還得學習:

  • Linux內核開發
  • 彙編指令

針對第二個方面,你還得學習:

  • 主流無人機軟體使用
  • 無人機理論基礎
  • 一些物理和電子基礎,應該會在專業課里慢慢教的


Linux用於的用途不一樣,學習的方向也不一樣,下面是我們團隊研究Linux運維學習的建議。

運維學習階段,需要分為四個階段,linux初級入門-àlinux中級進階-à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等運維自動化工具)

能掌握到這裡,基本能處理搞定很多工作了,可以去面試高級運維工程師,差不多薪資能達到12-18K左右

第四階段:資深方向進階

1、 大數據方向(需要對hadoop、storm等常見開源大數據系統需要深入了解)

2、 雲計算方向(主要是openstack這套東西,當然像一些kvm等虛擬化技術,也是需要掌握的,現在docker也比較流行)

3、 運維開發(主要是python運維開發)

4、 自動化運維(在之前自動化基礎上做深入)

5、 運維架構師(主要需要廣度,差不多5年左右以上經驗,可以擔當此職位)

另外我們整理了一個學習知識庫,你可以看一下:

【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送 | Linux運維部落


找一個比較容易入門的發行版(ubuntu,fedora,opensuse,mint)先裝雙系統,等基本使用熟練後卸掉windows,遇到問題谷歌或者百度


Linux這塊學習其實分為幾個階段:

1、打基礎:先將Linux基本的命令掌握

2、過度階段:如果將來決定從事純Linux運維,那麼大部分工作崗位都是互聯網提供的,所以要掌握Linux下的一些服務相關的內容。如果是從事資料庫方面的工作,服務的東西了解架構即可,當然掌握最好咯。

3、提升階段,可以拆分多個方向,當然在某些情況下又是相輔相成的。如果你對Linux內核開發有興趣的化,那麼你至少要掌握C或者C++等編程語言的使用,以及Linux的內核的設計原理,當然這個過程可能是漫長的,需要大量時間成本,也是可能賺錢最多的;如果你比較追求新鮮的概念,比如說到「雲"這個東西,那麼就要求你要掌握虛擬化技術,比如KVM、VMWARE、Docker等,以及行業內最流行的雲架構,比如Openstack等,另外要至少掌握Linux shell、python等常用的腳本語言,python現在很火。

4、飛升階段:就之前在過度階段提到的資料庫。掌握好現在乃至未來比較主流的資料庫產品,比如:Oracle、MySQL、mongoDB等,會是你的人生軌道上升到一個新的層次。

最後,祝所有在技術崗位上打拚的人們,都會獲得自己滿意的工作。


看您自己想做什麼了。有人學linux下C/C++編程,更多的是開發

還有的學系統的運維,這裡面有涉及性能調優啊,服務部署啊,監控啊blablabla,更側重*nix系統這樣

還有什麼嵌入式,不太懂就不說話了

還有別的比如分散式什麼的,也需要懂一點linux。

所以說,想清楚自己要做什麼,然後找相對應的方向學習和做就好。

就醬


空氣動力學,慣性導航,數學,我感覺這才是無人機最重要的部分。


我覺得你可以看看 鳥哥的私房菜。最應該注重的估計是基礎和伺服器吧....細節太多了。


如果你是對無人機感興趣你應該著重學習linux編程


如果是運維,學習各種管理工具,極其原理。如果是開發,關注語言處理工具,極其原理。不管是運維還是開發,都要深入內核,這樣才能真正吃透它。我正陷入內核,無法自拔。


推薦閱讀:

python調用CC++的方法各有什麼優勢,哪個最好?
我寫C++喜歡用繼承有問題么?
github 上有哪些遊戲或者遊戲開發相關的炫酷的user或者repo?
noexcept標識符為什麼不這樣設計?
C語言int型(2位元組)數據的值的範圍為什麼是-2^15~(2^15-1)?

TAG:編程 | Linux | Linux系統管理 | CC | 馬哥linux |