学习啦>学习方法>通用学习方法>学习经验>

如何才能有效的学习linux开发

欣怡分享

  如何才能有效的学习linux开发?想了解更多的信息吗,和学习啦小编一起看看吧! 以下是学习啦小编分享给大家的有效的学习linux开发的方法,希望可以帮到你!

  有效的学习linux开发的方法

  熟悉 Linux 系统,基本命令

  安装 Linux 系统,学会基本操作,熟悉文件系统,shell 脚本以及常用命令。

  了解程序开发过程

  搭建开发环境,了解 Linux 上程序开发过程。

  学会使用文本编辑工具 Vim,编译工具 gcc, as, 连接工具 ld, 调试工具 gdb, make 工具,会写 makefile。

  用 C 语言实现并编译自己的测试程序。

  尝试系统编程

  试着在 Linux 上用 C 语言进行系统编程,

  其中需要调用 Linux 系统库函数 (API)。

  例如,实现一个需要进行网络通信、操作文件的多线程/进程程序。

  以此深入了解 Linux 系统运行机制。

  学习内核

  上面学的差不多了,感兴趣的同学可以接着学习 Linux 内核。

  Linux 内核模块如下图

  这一部分内容比较深,能把它学透的基本就是大牛了,写个 OS 就不在话下了。

  驱动开发

  从这里开始,就不是必须的了。

  有兴趣的朋友可以深入学习。

  但是学习驱动开发无疑要把前面的都要学好。

  嵌入式系统开发

  学好 Linux 是嵌入式开发的基础。

  嵌入式系统开发包括很多方向,有硬件、软件,以及系统级别。

  硬件要学单片机,ARM、MIPS,DSP 等各种 MCU,具体就不多说了。

  软件的话,需要了解交叉编译,以及嵌入式环境下 C 语言的特殊用法,例如 volatile、 位操作、寄存器操作、大小端、程序跳转等。

  系统级,要了解 Linux 内核裁剪、移植、编译、调试,还有 Bootloader 、设备驱动等。

  学习Linux系统有用的忠告

  1.包管理和编译安装混着用,手动解决一个个依赖包,装个A发现少了B,装个B发现少了C,装个C发现少了D,装到最后,都忘了自己一开始是为了解决什么问题,好烦

  2.今天觉得这个发行版好,明天觉得这个发行版好,时间都用来装不同的发行版和桌面了,后来发现学一种足矣

  3.接触的知识不系统,却乱折腾,一会就搞得进不了系统,然后花大把时间去修复,还乐在其中

  4.永远不要相信某某指导教程上的某某语句。因为先确定自己的SHELL版本是最首要的,其次是要找一份手册,边看边学就是了,这样,自己敲入SHELL语句的错误率会降到最低。不然还没等学会,积极性就给打击完了。然后就是在学会基础以后反过来看看最新版本,比如RHEL7这个新遇到的坑,有些语句没有资料,虽然man 和 --help 也不是吃素的,但还是在这里强烈推荐《Linux就该这么学》这本书,专为RHEL7编写的开源在线书籍,书中基本无错误、内容更是突出重点,如果您是想考RHCE认证那真的再好不过了,联系刘遄老师就好,过来人的经验,他有自己的网站,百度一下就知道了。

  5.往返于各种发行版之间,反复不断地安装、格式化系统、安装、格式化系统---浪费时间!

  6.编译内核:如果不是做底层开发的话,这真没必要,既不改内核代码,又不看内核代码的话,编译内核没有任何意义。

  有效的学习linux开发的技巧

  1、 登陆到服务器

  在做任何操作之前,首先要登陆到目标服务器。简单地,使用SSH命令。将SSH 密钥存储在 ~/.ssh/ 中,使用有意义的文件名,例如aws-keypair.pem。使用如下命令登陆EC2主机。2、 拷贝文件到服务器

  使用SCP命令拷贝本地文件到服务器,例如将script.py 文件拷贝到EC2 服务器的命令如下:

  scp -i ~/.ssh/aws-keypair.pem script.py 3、使脚本在服务器的后台运行

  在服务的后台执行脚本,可以忽略其他进行的信号量,忽略标准的输入输出,将所有的输出和错误信息重定向到一个日志文件中。对于需要长时间运行的深度学习模型而言, 这是非常必要的。

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

  该命令中script.py 和 script.py.log 都位于 /home/ec2-user/ 目录下。关于 nohup 和重定向 参考其他的详细介绍(例如wikipedia中的介绍)。

  4、在服务器的指定 GPU 上执行脚本

  如果EC2 支持的话,推荐在同时运行多个脚本。例如,EC2有4个GPU的话, 可以在每个GPU上单独运行一个脚本,示例代码如下:

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

  如果有4个GPU的话,可以指定CUDA_VISIBLE_DEVICES从0到3。这在TF做后台的Keras上是可行的,在Theano 没有测试过。

  5、监测脚本的输出

  如果输出结果中有项目评分或者一个算法的运行结果,实时监控脚本的输出是很有意义的。示例如:tail -f script.py.log

  遗憾的是,当屏幕上在一段时间没有输出的时候,AWS 会关闭这个终端,所以最好使用:watch "tail script.py.log"

  有的时候看不到python的标准输出,不知道是python的问题还是EC2的问题。

  6、监测系统和进程的性能

  监测EC2系统的性能是有意义的,尤其是已经使用了或还剩下多少内存。例

  如:top -M 。或者指定进程标识PID:top -p PID -M

  7、监测GPU 性能

  如果在GPU上同时执行多个脚本,并行执行的话,查看每个GPU 的性能和使用率是不错的主意。例如:watch "nvidia-smi"

  8、检查脚本是否还在服务器上运行

  一般地,会保持终端一直是开着的,watch "ps -ef | grep python"

  9、在服务器上编辑文件

  一般不建议在服务器直接修改,当然你熟知vi除外:vi ~/script.py,vi 的用法就不在这里赘述了。

  10、从服务器上下载文件

  与上传文件相对,这是一个下个png文件的例子:scp -i ~/.ssh/aws-keypair.pem

猜你喜欢:

1.如何有效地提高学习效率

2.怎么样才能有效的减轻学习带来的压力

3.如何有效提高孩子的学习效率

4.如何系统有效的学习历史知识

5.如何有效提高小孩学习的兴趣

    3749328