-
1 # dai8688
-
2 # SteveJrong
Linux剛開始入門不太好學,等你入了門後面就輕鬆不少了。
剛開始學Linux你要記憶很多基本的命令,並且因為剛開始學不太熟悉,敲得時候會經常敲錯,有時候鍵盤按不對還容易無法退出諸如文字編輯器之類的東西,是比較考驗耐心的。
所以剛開始學習一定要腳踏實地,不要急躁,慢慢來,建議先以讀書的方式瞭解Linux的基本知識(Linux是什麼、檔案結構、與Windows的不同、Linux常見分支、Linux的歷史等)以後再上機一個一個對著敲,會更快一些。
學的差不多了可以本地裝個Linux虛擬機器實操一下,部署個NGINX、搭建個web網站試試,多練多總結才能收穫更多。
命令記不住就多看多記,沒有捷徑,只有多多練習和試錯你才能掌握的更紮實。
Linux研究到很深了,已經成為大佬了,那你就可以做驅動開發、核心編寫,甚至可以和國外的一些大佬加入Linux作業系統元件的開發大軍中,那簡直是厲害到家了。當然Linux的方向還有很多,軟體開發、硬體開發、嵌入式、大資料、人工智慧、網路、安防等等都會有Linux的身影,前途很廣闊,就看你的興趣和你選擇的方向了。
-
3 # 駿電影
windows視覺化視窗,操作簡單方便,容易學會。linux字元介面,指令操作,需要一定基礎。linux一般開發程式、釋出程式、做伺服器使用。
-
4 # 麒麟歸來
學習比較簡單,這也是很有學習前途的。
Linux在現在市場上是非常火的,有百分之八十五的公司都在使用Linux系統,前景非常不錯,而且Linux算是IT行業之中的入門技術,對於零基礎小白或者轉型者都是非常友好的,學習起來相對於比較簡單,薪資待遇非常不錯,發展方向也是非常廣闊的。
Linux因其高效率、易於裁剪、應用廣等優勢,成為了當今中高階伺服器的主要作業系統,並且處於一個不可替代的地位。Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、影片遊戲控制檯、臺式計算機、大型機和超級計算機。隨著Linux在中國市場迅猛發展,國內Linux人才缺口逐漸凸顯。Linux人才招聘也成了當前最熱門的招聘之一。
首先linux是一個非常非常大的概念。想全部吃透是不可能的。理想的說,搞懂linux,就可以做所有工作。個人更傾向於說想做什麼樣工作,需要學linux的哪部分。
按個人經驗介紹下常見的linux有哪些領域,並對應到什麼工作。
1)linux應用。這部分嚴格來說不能算是linux,只是跑在linux上的應用,比如web,網路,IT等,職業包括系統研發,後臺開發,伺服器效能最佳化,運維等;
2)linux定製。這部分涉及linux版本的使用者包較多,核心會有一些涉及,主要各種商業linux的訂製,服務等。比如redhat之類,不少是外國公司,國內大多招現場支援等。
3)linux核心開發。這部分主要是linux核心驅動的開發。幾乎全部是程式設計工作。主要是晶片公司,以及使用晶片的產品開發公司。前者如intel,marvell,後者如中興華為。
4)android衍生品。因為android包括慢慢火爆的tizen都用的linux核心,所以理由同3。所以手機晶片公司和手機開發公司也是linux開發者的僱主之一。比如高通,TI等;
一、Linux運維的主要工作內容
Linux運維作為眾多工作中需求人數最多,薪資待遇最高的崗位,本文重點介紹Linux運維的職業,本文內容由專門研究Linux運維學習和職業發展的機構馬哥教育和愛好者們聯合撰寫。
網際網路Linux運維工作,以服務為中心,以穩定、安全、高效為三個基本點,確保公司的網際網路業務能夠7×24小時為使用者提供高質量的服務。運維的職責覆蓋了產品從設計到釋出、執行維護、變更升級及至下線的生命週期。
產品的整個生命週期裡運維的職責重要而廣泛,但運維工程師們的職責不僅限於這部分工作,還需要總結工作中遇到的問題,抽取出相關的技術方向、研發相關的工具和平臺以支援/最佳化業務的發展並提高運維的效率,相關技術工作主要包括:
服務監控技術:包括監控平臺的研發、應用,服務監控準確性、實時性、全面性的保障
服務故障管理:包括服務的故障預案設計,預案的自動化執行,故障的總結並反饋到產品/系統的設計層面進行最佳化以提高產品的穩定性
服務容量管理:測量服務的容量,規劃服務的機房建設,擴容、遷移等工作
服務效能最佳化:從各個方向,包括網路最佳化、作業系統最佳化、應用最佳化、客戶端最佳化等,提高服務的效能和響應速度,改善使用者體驗
服務全域性流量排程:接入服務的流量,根據容量和服務狀態在各個機房間分配流量
服務任務排程:服務的各種定時/非定時任務的排程觸發及狀態監控
服務安全保障:包括服務的訪問安全、防攻擊、許可權控制等
資料傳輸技術:包括p2p等各類傳輸技術的研發應用,也遠距離大資料傳輸等問題的解決
服務自動釋出部署:部署平臺/工具的研發,及平臺/工具的使用,做到安全、高效的釋出服務
服務叢集管理:包括服務的伺服器管理、大規模叢集管理等
服務成本最佳化:儘可能降低服務執行使用的資源,降低服務執行成本
資料庫管理(DBA):透過設計、開發和管理高效能資料庫叢集,使資料庫服務更穩定、更高效、更易於管理。
平臺化的開發:類docker等平臺的開發管理,及服務接入技術
分散式儲存平臺的開發最佳化與接入
等等,凡是關係到服務質量、效率、成本、安全等方面的工作,及涉及到的技術、元件、工具、平臺都在運維的技術範疇裡。做好每一個技術方向、完成相應的元件、工具、平臺研發都能對履行運維職責起到積極的作用,對業務的發展發揮關鍵影響。
二、Linux運維工作分類
運維的工作方向比較多,隨著業務規模的不斷髮展,越成熟的網際網路公司,運維崗位會劃分得越細。當前很多大型的網際網路公司,在初創時期只有系統運維,隨著 模、服務質量的 要求,也逐漸進行了工作細分。一般情況下運維團隊的工作分類。
2.1-應用運維(SRE):應用運維負責線上服務的變更、服務狀態監控、服務容災和資料備份等工作,對服務進行例行排查、故障應急處理等工作,工作職責如下:設計評審、服務管理、資源管理、例行檢查、預案管理、資料備份。
2.2-系統運維(SYS):負責IDC、網路、CDN和基礎服務的建設(LVS、NTP、DNS);負責資產管理,伺服器選型、交付和維修,工作職責如下:IDC資料中心建設、網路建設、LVS負載均衡和SNAT建設、CDN規劃和建設、伺服器選型、交付和維護、核心選型和OS相關維護工作、資產管理、基礎服務建設。
2.3-資料庫運維(DBA):資料庫運維負責資料儲存方案設計、資料庫表設計、索引設計和SQL最佳化,對資料庫進行變更、監控、備份、高可用設計等工作,詳細的工作內容如下:設計評審、容量規劃、資料備份與災備、資料庫監控、資料庫安全、資料庫高可用和效能最佳化、自動化系統建設、運維研發、運維平臺、監控系統、自動化部署系統。
2.4-運維安全(SEC):運維安全負責網路、系統和業務等方面的安全加固工作,進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理,工作內容如下:安全制度建立、安全培訓、風險評估、安全建設、安全合規、應急響應。
三、Linux運維日常使用軟體和技能
運維工程師使用的運維平臺和工具包括:
Web伺服器:apache、tomcat、nginx、lighttpd
監控:nagios、ganglia、cacti、zabbix
自動部署:ansible、sshpt、salt
配置管理:puppet、cfengine
負載均衡:lvs、haproxy、nginx
傳輸工具:scribe、flume
備份工具:rsync、wget
資料庫:mysql、oracle、sqlserver
分散式平臺:hdfs、mapreduce、spark、storm、hive
分散式資料庫:hbase、cassandra、redis、MongoDB
容器:lxc、docker
虛擬化:openstack、xen、kvm
安全:kerberos、selinux、acl、iptables
問題追查:netstat、top、tcpdump、last
運維以技術為基礎,透過技術保障產品提供更高質量的服務。運維工作的職責及在業務中的位置決定了運維工程師需要具備更加廣博的知識和深入的技術能力:
紮實的計算機基礎知識,包括計算機系統架構,作業系統,網路技術等;
通用應用方面需要了解作業系統、網路、安全,儲存,CDN,DB等,知道其相關原理;
程式設計能力,小到運維工具的開發大到大型運維繫統/平臺的開發都需要有良好的程式設計能力;
資料分析能力:能夠整理、分析系統執行的各項資料,從中發現問題及找到解決方向;
豐富的系統知識,包括系統工具、典型系統架構、常見的平臺選型等;
綜合利用工具和平臺的能力;
早期的運維團隊在人員較少的情況下,主要是進行資料中心建設、基礎網路建設、伺服器採購和伺服器安裝交付工作。幾乎很少涉及線上服務的變更、監控、管理等工作。這個時候的運維團隊更多的屬於基礎建設的角色,提供一個簡單、可用的網路環境和系統環境即可。
隨著業務產品的逐漸成熟,對於服務質量方面就有了更高的要求。這個時候的運維團隊還會承擔一些伺服器監控的工作,同時會負責LVS、Nginx等與業務邏輯無關的4/7層運維工作。這個時候服務變更更多的是逐臺的手工操作,或者有一些簡單批次指令碼的出現。監控的焦點更多的在伺服器狀態和資源使用情況上,對服務應用狀態的監控幾乎很少,監控更多的使用各種開源系統如Nagios、Cacti等。
由於業務規模和複雜度的持續增加,運維團隊會逐漸劃分為應用運維和系統運維兩大塊。應用運維開始接手線上業務,逐步開展服務監控梳理、資料備份以及服務變更的工作。隨著對服務的深入,應用運維工程師有能力開始對服務進行一些簡單的最佳化。同時,為了應對每天大量的服務變更,我們也開始編寫各類運維工具,針對某些特定的服務能夠很方便的批次變更。隨著業務規模的增大,基礎設施由於容量規劃不足或抵禦風險能力較弱導致的故障也越來越多,迫使運維人員開始將更多的精力投入到多資料中心容災、預案管理的方向上。
業務規模達到一定程度後,開源的監控系統在效能和功能方面,已經無法滿足業務需求;大量的服務變更、複雜的服務關係,以前靠人工記錄、工具變更的方式不管在效率還是準確性方面也都無法滿足業務需求;在安全方面也出現了各種大大小小的事件,迫使我們投入更多的精力在安全防禦上。逐漸的,運維團隊形成之前提到的5個大的工作分類,每個分類都需要有專精的人才。這個時候系統運維更專注於基礎設施的建設和運維,提供穩定、高效的網路環境,交付伺服器等資源給應用運維工程師。應用運維更專注於服務執行狀態和效率。資料庫運維屬於應用運維工作的細化,更專注於資料庫領域的自動化、效能最佳化和安全防禦。運維研發和運維安全提供各類平臺、工具,進一步提升運維工程師的工作效率,使業務服務執行得更加穩定、高效和安全。
我們將運維發展過程劃分為4個階段。
手工管理階段:業務流量不大,伺服器數量相對較少,系統複雜度不高。對於日常的業務管理操作,大家更多的是逐臺登入伺服器進行手工操作,屬於各自為戰,每個人都有自己的操作方式,缺少必要的操作標準、流程機制,比如業務目錄環境都是各式各樣的。
工具批次操作階段:隨著伺服器規模、系統複雜度的增加,全人工的操作方式已經不能滿足業務的快速發展需要。因此,運維人員逐漸開始使用批次化的操作工具,針對不同操作型別出現了不同的指令碼程式。但各團隊都有自己的工具,每次操作需求發生變化時都需要調整工具。這主要是因為對於環境、操作的規範不夠,導致可程式化處理能力較弱。此時,雖然效率提升了一部分,但很快又遇到了瓶頸。操作的質量並沒有太多的提升,甚至可能因為批次執行而導致更大規模的問題出現。我們開始建立大量的流程規範,比如複查機制,先上線一臺伺服器觀察10分鐘後再繼續後面的操作,一次升級完成後至少要觀察20分鐘等。這些主要還是靠人來監督和執行,但在實際過程中執行往往不到位,反而降低了工作效率。
平臺管理階段:在這個階段,對於運維效率和誤操作率有了更高的要求,我們決定開始建設運維平臺,透過平臺承載標準、流程,進而解放人力和提高質量。這個時候對服務的變更動作進行了抽象,形成了操作方法、服務目錄環境、服務執行方式等統一的標準,如程式的啟停介面必須包括啟動、停止、過載等。透過平臺來約束操作流程,如上面提到的上線一臺伺服器觀察10分鐘。在平臺中強制設定暫停檢查點,在第一臺伺服器操作完成後,需要運維人員填寫相應的檢查項,然後才可以繼續執行後續的部署動作。
系統自排程階段:更大規模的服務數量、更復雜的服務關聯關係、各個運維平臺的林立,原有的將批次操作轉化成平臺操作的方式已經不再適合,需要對服務變更進行更高一層的抽象。將每一臺伺服器抽象成一個容器,由排程系統根據資源使用情況,將服務排程、部署到合適的伺服器上,自動化完成與周邊各個運維繫統的聯動,比如監控系統、日誌系統、備份系統等。透過自排程系統,根據服務執行情況動態伸縮容量,能夠自動化處理常見的服務故障。運維人員的工作也會前置到產品設計階段,協助研發人員改造服務使其可以接入到自排程系統中。
在整個運維的發展過程中,希望所有的工作都自動化起來,減少人的重複工作,降低知識傳遞的成本,使我們的運維交付更高效、更安全,使產品執行更穩定。對於故障的處理,也希望由事後處理變成提前發現,由人工處理變成系統自動容災。
五、2019年Linux運維必須抓住的前沿技能
這是技術世界正在發生的深刻變革的冰山一角,那麼問題來了? 作為傳統的運維該如何轉型呢?
這裡給出一點小的建議: 大致需要學習下這四個部分:
自動化運維(Ansible,Puppet,Saltstack等)
Devops(Docker,K8s,Jenkins,Jira等),
雲服務技術(虛擬化、OpenStack、AWS及阿里雲各種產品服務架構等)
python
-
5 # zyworkapp快開發系統
我是軟體開發人員,linux好不好學,我們可以考慮兩種情況,一種是無介面的純命令列模式的linux,一種是有使用者介面的類似於window模式。第一種使用命令列操作,需要熟悉各種命令,第二種相對簡單,可以滑鼠操作。但不管哪一種,建議都可學會並熟記常用命令。
學習linux是一種樂趣
回覆列表
要說這兩個系統的區別,可能會有以下幾點,
1、免費與收費
windows需要收費,linux是免費的。
2、安全性及穩定性
linux相對windows來說安全性更高系統執行也更穩定。
3、開源
開源就是指對外部開放軟體原始碼。linux開源,而Windows並不開源。
4、受眾面,Linux在企業中作為伺服器使用還是挺多的,但個人使用的較少,Windows不管是個人還是企業都有大量的使用者。
5、軟體與支援
Windows下可以執行絕大部分軟體、硬體廠商近乎100%的支援。linux下可直接執行的軟體數量和win下比起來就要少的很多,同時linux正期待更多硬體廠商的支援。
至於這兩個系統好不好學習,要看你是從事那一方面,如果只是簡單使用,當然Windows還是要方便一些,雖然Linux也出了視覺化的操作介面,但windows的使用習慣,是長期養成的。
當然如果你的學習是為了後續從事開發或其他方面,坦白講沒有那個是一定好學的,畢竟這兩個系統的核心還是有區別的,windows作業系統核心是NT,而linux 是 shell。
在學習之前你可以從網上先找一些資料參考,根據自己的實際情況在做決定學習那個系統。
學習Linux之後你可以從事很多職業,來看一下都有哪些職業:1、Linux嵌入式開發。這個就是透過移植Linux到硬體平臺上,然後寫一些應用程式. 這個相對來說簡單不少,也好入門。2、Linux運維。Linux運維工作很火,一般大公司運維還要懂核心以及C程式設計之類的,但是小公司完全就是打雜的。也用不到多少開發的知識,如果說開發是DPS,運維更像是輔助加血什麼的,這個可以報個班考個RHCE來入行,工資起點應該是最低的吧。3、Linux伺服器開發。如果是用C/C++之類的話,要求也很高。因為網際網路行業才人流動性相對大,所以工資可觀,特別是對最佳化延遲什麼的瞭解很深入的,發展前景是最好的。這個招聘量較少,但相對核心來說多些,專業知識要求比較全面,並且深入研究還有分散式,並行演算法,叢集之類的方向.想要發展的好幾乎CS的基礎科目都要有非常深入的理解。4、Linux核心開發。這裡基本都是比較有難度的.像華為,小米這種的硬體公司一般有這個職位,工資也是很高的,知識相對單一,但是作業系統底層的硬體更新也比較快. 作業系統理論也很靈活,深入不容易.主要研究的方向可能和職位也比較相關。5、雲運維。實際上也是運維的一種.對硬體的安裝什麼的較3來說應該比較少.對原理性的東西也要求比較高,我記得前些天還在培訓機構上看到有紅帽雲認證的.可以去考一個.小公司對雲還是有需求的.工資應該比3高點,具體我也不清楚。6、雲平臺開發。現在大的雲平臺基本都是基於Linux的KVM的.這個也是軟硬兼修的,並且還要求掌握虛擬化技術.公司也少,國內主要有百度,華為,阿里,騰訊一些大公司在搞,門檻高,需要的知識也比較多,大公司,自然工資很高。