對(duì)于許多Linux小白來(lái)說(shuō),他們根本就不知道要學(xué)Linux方向是什么?有的人甚至不知道Linux是什么?其實(shí)在網(wǎng)上不難知道Linux是什么。Linux只是一個(gè)簡(jiǎn)單的操作系統(tǒng)。而對(duì)于Linux的發(fā)展方向,其實(shí)也就是運(yùn)維、開(kāi)發(fā)和底層三方面。在學(xué)習(xí)Linux時(shí)知道了方向,一定要比盲目的學(xué)習(xí)要透徹些,下面我就對(duì)這三個(gè)方向進(jìn)行展開(kāi)。
方向一:運(yùn)維
這應(yīng)該是很多 Linux 從業(yè)者給大家的形象吧,很多人也把我當(dāng)作運(yùn)維工程師,問(wèn)我一堆運(yùn)維方向的問(wèn)題,可是我不是這個(gè)方向的,我真不會(huì)啊!
那運(yùn)維方向主要做一些什么工作?
首先,是服務(wù)器維護(hù)。
保證服務(wù)器正常運(yùn)行不宕機(jī),這是最最基本的要求。服務(wù)器一旦宕機(jī),公司找的第一個(gè)一般是運(yùn)維工程師,所以,很多運(yùn)維工程師都自嘲是「背鍋俠」。
然后,需要給開(kāi)發(fā)人員提供一個(gè)可靠的服務(wù)器運(yùn)作環(huán)境和技術(shù)支持
我所知道的很多公司的開(kāi)發(fā)環(huán)境是由開(kāi)發(fā)人員自己搭建好的,但是,也有些公司將這部分工作內(nèi)容交給運(yùn)維工程師,而開(kāi)發(fā)人員就專注于寫代碼。
當(dāng)然,還包括對(duì)各種服務(wù)的配置,如FTP,DNS,APACHE,IPTABLE,ORACLE,MYSQL等。
除此之外,還要對(duì)服務(wù)器狀態(tài)進(jìn)行監(jiān)控,如CPU內(nèi)存占用,進(jìn)程僵死崩潰,磁盤空間,異常登陸等。當(dāng)然,還要負(fù)責(zé)系統(tǒng)進(jìn)行升級(jí),備份等等工作。
那些之前問(wèn)我問(wèn)題的小伙伴,你們看看,是不是包含在這里?沒(méi)關(guān)系,其實(shí)我的內(nèi)心還是很(xiang)淡(ma)定(ren)的。
那么,運(yùn)維工程師需要學(xué)一些什么?
運(yùn)維工程師需要懂很多的命令,然后就是上面提到的開(kāi)發(fā)環(huán)境的搭建,各種服務(wù)的配置,以及日常的維護(hù)之類,都需要會(huì)。很多的操作其實(shí)通過(guò)腳本就能很方便完成,所以運(yùn)維工程師很多還需要懂 Shell 及 Python。推薦的入門書籍:鳥哥 Linux 私房菜。
方向二:應(yīng)用開(kāi)發(fā)
這就是我的老本行啦~啊,不對(duì),我的老本行是機(jī)械……
應(yīng)用開(kāi)發(fā)及底層開(kāi)發(fā)方向就要寫比較多的代碼了,相對(duì)而言運(yùn)維工程師就不需要寫很多代碼。
Linux 應(yīng)用開(kāi)發(fā)工程師主要做一些什么工作?
簡(jiǎn)單而言,Linux 應(yīng)用開(kāi)發(fā)工程師主要在Linux 環(huán)境下開(kāi)發(fā)各種應(yīng)用程序,就如同你們?cè)?Windows 下開(kāi)發(fā)的應(yīng)用程序一樣(比如QQ,PC微信等)。這些應(yīng)用程序有些帶有界面,也有很多是不帶界面的。帶界面的很多是由 QT 開(kāi)發(fā),當(dāng)然也有其他的開(kāi)發(fā)工具。
Linux 應(yīng)用開(kāi)發(fā)工程師需求量相對(duì)比較多,行業(yè)分布也比較廣。方向主要有兩個(gè),一個(gè)是服務(wù)器方向,另一個(gè)是嵌入式方向。
幾乎所有的科技公司都有服務(wù)器,所以在很多行業(yè)都有 Linux 應(yīng)用工程師的身影。而嵌入式方向,也就是我現(xiàn)在的方向,就是在嵌入式平臺(tái)上開(kāi)發(fā)應(yīng)用程序,其實(shí)道理都是一樣的。
那么 Linux 應(yīng)用開(kāi)發(fā)工程師需要掌握什么技能?
首先肯定要熟悉 Linux 平臺(tái)的 API ,包括 IO 操作,進(jìn)程間通訊, Linux 環(huán)境,網(wǎng)絡(luò)通訊,等等,推薦看 APUE 這本神書。當(dāng)然還需要懂腳本語(yǔ)言,包括 Shell, Python ,都需要懂。還有數(shù)據(jù)庫(kù)的操作,比如 MySQL,Sqlite,至少要懂一個(gè)。
對(duì)于編程語(yǔ)言的話,大多數(shù)情況下是使用 C/C++ 。如果你需要做界面開(kāi)發(fā),可能還需要懂 QT 。
除此之外,你還需要懂一些行業(yè)規(guī)范,這個(gè)是應(yīng)用工程師的必備技能。
方向三:底層開(kāi)發(fā)
底層開(kāi)發(fā)工程師相對(duì)而言需求就會(huì)少一些,一個(gè)公司通常會(huì)養(yǎng)一堆的應(yīng)用開(kāi)發(fā)工程師,但底層開(kāi)發(fā)工程師可能就配備了一兩個(gè)。為什么?因?yàn)楝F(xiàn)在很多底層移植、適配的工作都由芯片廠商都幫你做好了,你們很多情況下只需做維護(hù)就好了。
所以,底層開(kāi)發(fā)工程師的一個(gè)很好去處就是芯片廠商,如果對(duì)這塊有興趣的朋友,芯片廠商是一個(gè)很好的去處。
當(dāng)然底層開(kāi)發(fā)工程師不僅僅做維護(hù)了,也是會(huì)根據(jù)公司的業(yè)務(wù)需求做一些定制。除此之外,還會(huì)做驅(qū)動(dòng)開(kāi)發(fā)的工作。
那底層開(kāi)發(fā)工程師需要掌握什么技能?
雖然說(shuō)移植之類的工作現(xiàn)在很多都由芯片廠商完成,但uboot,文件系統(tǒng),內(nèi)核這類的移植技能肯定要掌握。然后,驅(qū)動(dòng)開(kāi)發(fā)也肯定要會(huì),因?yàn)檫@部分工作的份量還是不少的。
而在做底層開(kāi)發(fā)工作時(shí),還有一個(gè)重要的技能,就是芯片手冊(cè)的查看。如果你不會(huì)查看芯片手冊(cè),那后面的移植啊,驅(qū)動(dòng)開(kāi)發(fā)之類的工作都無(wú)從談起。
有些公司可能還會(huì)對(duì)內(nèi)核進(jìn)行裁剪定制,那么,就需要對(duì)內(nèi)核源碼比較了解了,這部分要求就相對(duì)比較高了。
以上即是關(guān)于學(xué)習(xí)Linux方向是什么的全部?jī)?nèi)容介紹,想了解更多關(guān)于Linux的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。