如何才能有效的学习linux开发
如何才能有效的学习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
猜你喜欢: