到什么程度才叫精通Linux?

如题所述

许多同学触摸Linux不多,对Linux渠道的开发更是一窍不通。而如今的趋势越来越标明,作为一个优秀的软件开发人员,或计算机IT职业从业人员,把握Linux是一种很主要的营生资本与手法。

下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。

就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。

Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。

由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。

付费的软件不一定好。

首先,Virtual Box很小巧,Windows平台下安装包在80MB左右,而VM动辄600MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。

如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直接看官方文档。现在介绍Linux发行版的知识。

正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。

我推荐的发行版如下:

UBUNTU 适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。

Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。

Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。

Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。

Slackware与Gentoo类似。

CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。

LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。

1、Linux基础

你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。

在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。

2、Linux平台的C/C++开发,同时还有Bash脚本编程[JAVA]

再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。 Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。

虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。 IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。

我推荐的书如下:C语言程序设计。 C语言,白皮书当然更好。 C++推荐 C++ Primer Plus, Java我不喜欢,就不推荐了,附一个别人的书单:java 入门书籍。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。

如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。

3、UNIX环境高级编程

UNIX环境高级编程堪称神作,经典中的经典。

接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看10遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。

(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分, Google创始人的案头书籍,扎尔伯克的床头读物。)

这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。 Linux不是,Linux系统的核心API就100来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。

这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。

另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS400系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?

如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。

4、选择方向:网络,图形,嵌入式,设备驱动

网络方向:服务器软件编写及高性能的并发程序编写

现在是时候做分流了。大体上我分为四个方向:网络,图形,嵌入式,设备驱动。

如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。

我的看法是以下面的顺序来看书:

APUE再深读– 尤其是进程,线程,IPC,套接字

多核程序设计- Pthread一定得吃透了,你很NB

UNIX网络编程– 卷一,卷二

TCP/IP网络详解– 卷一再看上面两本书时就该看了

5.TCP/IP 网络详解– 卷二我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了

6.Lighttpd源代码- 这个服务器也很有名了

7.Nginx源代码– 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。

Linux内核 TCP/IP协议栈– 深入了解TCP/IP的实现

如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。

当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!

图形方向,我觉得图形方向也是很有前途的,以下几个方面。

Opengl的工业及游戏开发,国外较成熟。

影视动画特效,如皮克斯,也是国外较成熟。

GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好。

嵌入式方向:嵌入式方向没说的,Linux很重要。

掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,否则你会很惨的。

驱动程序设计:

软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,怎么让他们在Linux上作业起来,这是你的作业。由于Linux的兼容性极好,假如不是太低层的驱动,根本C言语就能够搞定,体系架构的影响不大,由于有体系支撑,你可能做少许更改就能够在ARM上运用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件常识的请求很高。

能够娴熟的建立常见的效劳,lnmp,ftp,dns,smba,假如呈现毛病,能够及时的排除去。。。常常运用Linux,必定能够变成大神。

原文链接:http://www.magedu.com/71706.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-26

本系列教程将完整的讲解整个Linux相关的知识,这是楼主学完之后重新对Linux知识体系的整理。从最基础的知识开始,对于一个完全不懂Linux系统的人,相信在看完整个系列教程之后,都能对Linux有一个完完全全的了解。那么废话不多说,本篇博客作为整个教程的第一讲,我们就先来对Linux有个简单的整体介绍。

1、Unix

可能大家首先看到Unix会有点奇怪,我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!

Unix 是在1969年美国贝尔实验室的肯.汤普森开发出来的一款操作系统,什么是操作系统?大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:

而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统,而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。

虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。

2、Linux

UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机,当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。不幸的是,从那时候开始,UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。

1991年 10月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,而 Linus Torvalds 对Minix不是很满意,于是决定自己编写软件。他以学生时代熟悉的Unix作为原型,在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域。他第一次发行的版本很快吸引了一些黑客。尽管最初的 Linux 并没有多少用处,但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。值得注意的是Linux并没有包括Unix源码,它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

3、Unix和Linux的区别

Linux和UNIX的最大的区别是,前者是开放源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型。具体区别如下:

①、UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.

②、UNIX是商业软件,收费,而Linux是自由软件,免费、公开源代码的.

③、Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.

④、Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware.

4、总结

本篇博客我们对Linux系统有个简单的了解,大家过一眼就行了。下一篇博客我们将讲解如何安装Linux系统。

PS:这篇文章原文是本人原创博客:http://www.cnblogs.com/ysocean/p/.html,欢迎大家观看!!!

第2个回答  2017-12-26

计划用三篇文章让大家从入门linux到精通,今天介绍第一篇。任何成果都是勤奋换来的,认真学习了三篇文章,linux就算入门,勤加练习,基本的运维可以做到,工作当中不会遇到太大的麻烦

linux的版本

2 Linux特殊符号介绍(一)

3常用Linux命令介绍(一)

第3个回答  2017-12-26

如今,随着互联网的快速发展,像百度、阿里巴巴、京东、美团、饿了么、腾讯等一大批互联网企业需要信息安全工程师,几乎所有企业中都需要信息安全工程师管理公司的网络、服务器、电脑设备等,目前网络运维工程师的需求缺口特别大。

对于linux运维工程师来说,大多的相关知识在我们生活中是不易学到的,尤其是对于刚刚毕业的大学生而言,这些都是大学里面没有的课程,所以大家就看向培训机构了。因为在linux运维培训中,会学到更多的知识,真因为如此大家就对好的linux运维培训在哪儿?这个问题比较感兴趣了,下面就带大家看看我们该如何选择一个好的linux运维培训机构?好的linux运维培训机构在哪儿?这些的相关问题。

凌阳教育是全国唯一“原厂嵌入式培训”机构,拥有完全自主知识产权“嵌入式\\网络运维、HTML5、Java、PHP”实训体系。通过在凌阳教育的培训,使学员具备“专业化的职业素质,职业化的专业素质”。

能通过四个月时长的学习、实操,让学生掌握Windows、Linux 系统使用与管理,熟悉网络拓扑结构,掌握企业网络组建,企业服务器管理,数据库管理

等技能

能够构建完整的各类大中型底层网络,应用微软、Ubuntu等操作系统建立WEB、邮件、域名等各种服务器,能够保证网络的安全,无论是基于硬件的安全还是基于系统的安全。

能维护大型企业信息系统的整体安全性,对设备、系统、用户行为和不可预期的安全威胁进行防御和审计。

课程目标:

1每个学员经培训后都具备独立解决问题的能力和方法。

2培养良好的语言表达能力,亲和力,沟通能力和团队意识。

3熟练掌握window操作系统的安装调试与基本设置。

4熟练掌握使用Linux下shell脚本语言。

5熟练掌握计算机网络的体系结构和TCP/IP协议的基本知识。

6能够独立胜任公司日常的系统维护。

7能维护大型企业信息系统的整体安全性。

8熟悉网络拓扑结构,掌握企业网络组建,企业服务器管理,数据库管理

9能够构建完整的各类大中型底层网络

10通过4个月的实战培训让学员能够获得相对的工作经验。

相似回答