學(xué)習(xí)啦 > 學(xué)習(xí)方法 > 通用學(xué)習(xí)方法 > 學(xué)習(xí)經(jīng)驗(yàn) > 如何才能有效的學(xué)習(xí)linux開(kāi)發(fā)

如何才能有效的學(xué)習(xí)linux開(kāi)發(fā)

時(shí)間: 欣怡1112 分享

如何才能有效的學(xué)習(xí)linux開(kāi)發(fā)

  如何才能有效的學(xué)習(xí)linux開(kāi)發(fā)?想了解更多的信息嗎,和學(xué)習(xí)啦小編一起看看吧! 以下是學(xué)習(xí)啦小編分享給大家的有效的學(xué)習(xí)linux開(kāi)發(fā)的方法,希望可以幫到你!

  有效的學(xué)習(xí)linux開(kāi)發(fā)的方法

  熟悉 Linux 系統(tǒng),基本命令

  安裝 Linux 系統(tǒng),學(xué)會(huì)基本操作,熟悉文件系統(tǒng),shell 腳本以及常用命令。

  了解程序開(kāi)發(fā)過(guò)程

  搭建開(kāi)發(fā)環(huán)境,了解 Linux 上程序開(kāi)發(fā)過(guò)程。

  學(xué)會(huì)使用文本編輯工具 Vim,編譯工具 gcc, as, 連接工具 ld, 調(diào)試工具 gdb, make 工具,會(huì)寫(xiě) makefile。

  用 C 語(yǔ)言實(shí)現(xiàn)并編譯自己的測(cè)試程序。

  嘗試系統(tǒng)編程

  試著在 Linux 上用 C 語(yǔ)言進(jìn)行系統(tǒng)編程,

  其中需要調(diào)用 Linux 系統(tǒng)庫(kù)函數(shù) (API)。

  例如,實(shí)現(xiàn)一個(gè)需要進(jìn)行網(wǎng)絡(luò)通信、操作文件的多線程/進(jìn)程程序。

  以此深入了解 Linux 系統(tǒng)運(yùn)行機(jī)制。

  學(xué)習(xí)內(nèi)核

  上面學(xué)的差不多了,感興趣的同學(xué)可以接著學(xué)習(xí) Linux 內(nèi)核。

  Linux 內(nèi)核模塊如下圖

  這一部分內(nèi)容比較深,能把它學(xué)透的基本就是大牛了,寫(xiě)個(gè) OS 就不在話下了。

  驅(qū)動(dòng)開(kāi)發(fā)

  從這里開(kāi)始,就不是必須的了。

  有興趣的朋友可以深入學(xué)習(xí)。

  但是學(xué)習(xí)驅(qū)動(dòng)開(kāi)發(fā)無(wú)疑要把前面的都要學(xué)好。

  嵌入式系統(tǒng)開(kāi)發(fā)

  學(xué)好 Linux 是嵌入式開(kāi)發(fā)的基礎(chǔ)。

  嵌入式系統(tǒng)開(kāi)發(fā)包括很多方向,有硬件、軟件,以及系統(tǒng)級(jí)別。

  硬件要學(xué)單片機(jī),ARM、MIPS,DSP 等各種 MCU,具體就不多說(shuō)了。

  軟件的話,需要了解交叉編譯,以及嵌入式環(huán)境下 C 語(yǔ)言的特殊用法,例如 volatile、 位操作、寄存器操作、大小端、程序跳轉(zhuǎn)等。

  系統(tǒng)級(jí),要了解 Linux 內(nèi)核裁剪、移植、編譯、調(diào)試,還有 Bootloader 、設(shè)備驅(qū)動(dòng)等。

  學(xué)習(xí)Linux系統(tǒng)有用的忠告

  1.包管理和編譯安裝混著用,手動(dòng)解決一個(gè)個(gè)依賴包,裝個(gè)A發(fā)現(xiàn)少了B,裝個(gè)B發(fā)現(xiàn)少了C,裝個(gè)C發(fā)現(xiàn)少了D,裝到最后,都忘了自己一開(kāi)始是為了解決什么問(wèn)題,好煩

  2.今天覺(jué)得這個(gè)發(fā)行版好,明天覺(jué)得這個(gè)發(fā)行版好,時(shí)間都用來(lái)裝不同的發(fā)行版和桌面了,后來(lái)發(fā)現(xiàn)學(xué)一種足矣

  3.接觸的知識(shí)不系統(tǒng),卻亂折騰,一會(huì)就搞得進(jìn)不了系統(tǒng),然后花大把時(shí)間去修復(fù),還樂(lè)在其中

  4.永遠(yuǎn)不要相信某某指導(dǎo)教程上的某某語(yǔ)句。因?yàn)橄却_定自己的SHELL版本是最首要的,其次是要找一份手冊(cè),邊看邊學(xué)就是了,這樣,自己敲入SHELL語(yǔ)句的錯(cuò)誤率會(huì)降到最低。不然還沒(méi)等學(xué)會(huì),積極性就給打擊完了。然后就是在學(xué)會(huì)基礎(chǔ)以后反過(guò)來(lái)看看最新版本,比如RHEL7這個(gè)新遇到的坑,有些語(yǔ)句沒(méi)有資料,雖然man 和 --help 也不是吃素的,但還是在這里強(qiáng)烈推薦《Linux就該這么學(xué)》這本書(shū),專(zhuān)為RHEL7編寫(xiě)的開(kāi)源在線書(shū)籍,書(shū)中基本無(wú)錯(cuò)誤、內(nèi)容更是突出重點(diǎn),如果您是想考RHCE認(rèn)證那真的再好不過(guò)了,聯(lián)系劉遄老師就好,過(guò)來(lái)人的經(jīng)驗(yàn),他有自己的網(wǎng)站,百度一下就知道了。

  5.往返于各種發(fā)行版之間,反復(fù)不斷地安裝、格式化系統(tǒng)、安裝、格式化系統(tǒng)---浪費(fèi)時(shí)間!

  6.編譯內(nèi)核:如果不是做底層開(kāi)發(fā)的話,這真沒(méi)必要,既不改內(nèi)核代碼,又不看內(nèi)核代碼的話,編譯內(nèi)核沒(méi)有任何意義。

  有效的學(xué)習(xí)linux開(kāi)發(fā)的技巧

  1、 登陸到服務(wù)器

  在做任何操作之前,首先要登陸到目標(biāo)服務(wù)器。簡(jiǎn)單地,使用SSH命令。將SSH 密鑰存儲(chǔ)在 ~/.ssh/ 中,使用有意義的文件名,例如aws-keypair.pem。使用如下命令登陸EC2主機(jī)。2、 拷貝文件到服務(wù)器

  使用SCP命令拷貝本地文件到服務(wù)器,例如將script.py 文件拷貝到EC2 服務(wù)器的命令如下:

  scp -i ~/.ssh/aws-keypair.pem script.py 3、使腳本在服務(wù)器的后臺(tái)運(yùn)行

  在服務(wù)的后臺(tái)執(zhí)行腳本,可以忽略其他進(jìn)行的信號(hào)量,忽略標(biāo)準(zhǔn)的輸入輸出,將所有的輸出和錯(cuò)誤信息重定向到一個(gè)日志文件中。對(duì)于需要長(zhǎng)時(shí)間運(yùn)行的深度學(xué)習(xí)模型而言, 這是非常必要的。

  > nohup python /home/ec2-user/script.py >/home/ec2-user/script.py.log &1 &

  該命令中script.py 和 script.py.log 都位于 /home/ec2-user/ 目錄下。關(guān)于 nohup 和重定向 參考其他的詳細(xì)介紹(例如wikipedia中的介紹)。

  4、在服務(wù)器的指定 GPU 上執(zhí)行腳本

  如果EC2 支持的話,推薦在同時(shí)運(yùn)行多個(gè)腳本。例如,EC2有4個(gè)GPU的話, 可以在每個(gè)GPU上單獨(dú)運(yùn)行一個(gè)腳本,示例代碼如下:

  CUDA_VISIBLE_DEVICES=0 nohup python /home/ec2-user/script.py >/home/ec2-user/script.py.log &1 &

  如果有4個(gè)GPU的話,可以指定CUDA_VISIBLE_DEVICES從0到3。這在TF做后臺(tái)的Keras上是可行的,在Theano 沒(méi)有測(cè)試過(guò)。

  5、監(jiān)測(cè)腳本的輸出

  如果輸出結(jié)果中有項(xiàng)目評(píng)分或者一個(gè)算法的運(yùn)行結(jié)果,實(shí)時(shí)監(jiān)控腳本的輸出是很有意義的。示例如:tail -f script.py.log

  遺憾的是,當(dāng)屏幕上在一段時(shí)間沒(méi)有輸出的時(shí)候,AWS 會(huì)關(guān)閉這個(gè)終端,所以最好使用:watch "tail script.py.log"

  有的時(shí)候看不到python的標(biāo)準(zhǔn)輸出,不知道是python的問(wèn)題還是EC2的問(wèn)題。

  6、監(jiān)測(cè)系統(tǒng)和進(jìn)程的性能

  監(jiān)測(cè)EC2系統(tǒng)的性能是有意義的,尤其是已經(jīng)使用了或還剩下多少內(nèi)存。例

  如:top -M ?;蛘咧付ㄟM(jìn)程標(biāo)識(shí)PID:top -p PID -M

  7、監(jiān)測(cè)GPU 性能

  如果在GPU上同時(shí)執(zhí)行多個(gè)腳本,并行執(zhí)行的話,查看每個(gè)GPU 的性能和使用率是不錯(cuò)的主意。例如:watch "nvidia-smi"

  8、檢查腳本是否還在服務(wù)器上運(yùn)行

  一般地,會(huì)保持終端一直是開(kāi)著的,watch "ps -ef | grep python"

  9、在服務(wù)器上編輯文件

  一般不建議在服務(wù)器直接修改,當(dāng)然你熟知vi除外:vi ~/script.py,vi 的用法就不在這里贅述了。

  10、從服務(wù)器上下載文件

  與上傳文件相對(duì),這是一個(gè)下個(gè)png文件的例子:scp -i ~/.ssh/aws-keypair.pem

猜你喜歡:

1.如何有效地提高學(xué)習(xí)效率

2.怎么樣才能有效的減輕學(xué)習(xí)帶來(lái)的壓力

3.如何有效提高孩子的學(xué)習(xí)效率

4.如何系統(tǒng)有效的學(xué)習(xí)歷史知識(shí)

5.如何有效提高小孩學(xué)習(xí)的興趣

3749328