文档章节

如何学习Linux

日拱一卒
 日拱一卒
发布于 2014/05/17 16:06
字数 1553
阅读 301
收藏 10

学习linux,首先得看你想用linux做那方面的工作。你可以做一个系统管理员,也可以做一个linux服务器环境开发人员,也可以做网络通信方面的,甚至底层的可以向驱动程序发展。
先大概讲一下这些方面都做些什么吧。
系统管理不必多说,你得精通linux的命令和脚本,擅长处理各种数据文件,linux的脚本语言很多,shell是一种。系统管理员最主要的工作所管理维护Linux系统的配置环境,所以这项工作必须熟悉“命令行和脚本”。
环境开发:主要是利用linux现有的系统调用接口SCI,开发基于linux环境的应用程序。什么是SCI,简单来说,就是Linux内核提供的函数库。例如linux的函数read提供读文件的功能。那么环境开发是个什么样的工作呢?就是利用linux已经提供好的SCI这样一个库函数调用接口,去写一些支持linux系统环境的程序,举个例子,C语言程序员熟知的stdio.h就是依靠SCI编写出来的,环境开发就是在linux提供的SCI上面开发一些函数库,提供比较基本的功能例如数据文件管理,数据库管理等。数据文件管理也可以通过命令行来做,但是命令行做的功能不如环境开发编程能实现的功能强大和灵活。
网络编程:这是linux最为核心的功能之一。linux网络编程提供了在TCP和IP层编程接口,在上面进行的编程涉及到网络层次中的传输层,网络层,链路层。链路层更接近网卡等硬件,网络层和传输层提供了在不同主机之间传送数据的接口。如果能把Linux网络编程学好,那么看懂nginx这类http服务器源码不会有太大障碍,因为这类开源项目都使用了linux提供的TCP/IP等编程函数库。
驱动开发:如果说,你想进一步往底层硬件发展,使用linux为各种硬件设备写驱动程序,那么驱动开发就是linux一个不错的方向。驱动开发位于内核水平,所以当你做驱动开发的时候,往往需要一定程度的了解linux内核结构。
这里,我们梳理一下:
任何人学习linux都从最上面的用户层,即使用linux系统功能开始学起,最后才一点点的往底层发展。所以基本的学习顺序是:
linux命令行脚本-->Linux环境开发/网络编程-->linux驱动开发-->linux内核 


因此给LZ建议的读书方案是这样的:
(1)学会“使用linux”

无论你往上面哪个方向发展,一开始要做的应当是学会使用linux的命令行和shell脚本,这一步帮助你了解“怎么使用Linux”。 推荐书籍《鸟哥linux私房菜(上卷)》(鸟哥的下卷是关于linux服务器架站方面的内容,如果你想利用linux搭建一个自己的网络服务器,那么可以看完上卷后继续看下卷),《linux命令行与shell脚本》(这本书主要教你使用shell脚本处理各种linux系统任务)
(2)学会“开发linux用户程序”
这里所说的是在linux提供的SCI库基础上进行编程,写一些应用程序。下面介绍的是本人学过的几本,都是出自同一个作者
unix高级环境编程:主要是关于如何使用linux函数库编写本地用户程序
unix网络编程(steven):主要所关于使用linux函数库编写跨主机网络通信程序
学习上面书籍过程中可能涉及到linux的I/O操作,多进程,进程通信等详细内容。一般我们在《操作系统原理》上面学的只是抽象的一些I/O操作和多进程的原理,但是上面两本书会告诉你当使用Linux平台的情况下,如何使用操作系统提供的这些功能。
注:UNIX系统和linux系统的SCI在很大程度上是相同的,我推荐你学习《unix网络编程》这本书,你不一定非得用unix系统去写上面的程序,在linux上面也能运行这些程序,unix和linux提供了相似的SCI。

(3)底层硬件开发
我不是做这方面工作的,我觉得如果开发硬件,最起码得学过《数字电路》《单片机》《嵌入式系统》。如果说linux涉及到底层硬件开发的书籍,我只能介绍《linux设备驱动程序》这本书,不过本人不做这方面,所以仅供参考。
(4)研究linux内核代码
这估计是很多大牛所从事过的事情:linux是一款开源系统,你可以下linux源代码下来研究linux这样一款系统是如何写出来的。不过直接看源代码估计对大部分人来说很挑战他们的记忆力和阅读能力。所以我提议LZ如果想研究LINUX内核代码,可以先从linux的架构开始了解,推荐书籍有:
《深入Linux内核架构》《深入理解linux内核》


最后请记住:学习一个操作系统的第一步,就是先学会怎么使用这个系统,所以赶紧安装一个linux发行版,无论是ubuntu还是centOS,安装好linux系统后,就开始在上面捣鼓命令和脚本吧,然后你就能体会到linux是一款多么强大的系统。如果你还想对linux做更为深入的了解,在熟悉了linux的命令行使用后,可以向内核或者编程开发进发。这是一段很长的路,祝LZ可以坚持下去,成为一个LINUX技术大牛。


本文转载自:http://tieba.baidu.com/p/2703986135?qq-pf-to=pcqq.c2c

日拱一卒
粉丝 16
博文 63
码字总数 24558
作品 0
沈阳
其他
私信 提问
有用的资源,献给那些想更多了解 Linux 的人

Linux 是最流行和多功能的操作系统之一,它可以用在智能手机,电脑甚至汽车上。自 20 世纪 90 年代以来,Linux 存在至今,并且仍然是最普遍的操作系统之一。 Linux 实际上用于运行大多数网络...

16%
2018/05/21
0
0
要想学会Kali linux事先需要掌握哪些知识?

算起来在linux上开发程序差不多有十几年的时间了,接触linux是从一本杂志上看到的,说到了linux系统如何的高效安全,于是在千方百计的搞了个linux系统盘,然后安装起来了,切换到命令行界面,...

技术小能手
2018/11/05
0
0
我是如何沉迷于linux系统的?

Linux?这个对大多数人来说,是一个陌生的词。曾经的我,对这个也是一无所知的,我没有编程背景,我的专业知识是英语,而不是计算机语言。 我是如何和这个词搭上联系的呢?还是缘于一段一次奇...

linuxprobe16
2018/12/27
26
1
中文 Linux Wiki 上线

中文Linux Wiki是由51开源社区发起的Wiki 项目。Linux Wiki的美好愿景是建立一个中文Linux知识库并实时更新,方便Linux爱好者查阅和学习。Linux Wiki的第一个任务是Linux 命令,目前已添加几...

AndroidMe
2011/12/01
1K
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linuxprobe16
2018/10/18
11
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
40
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部