我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么?
在回答学什么之前,我们先看看为什么要学。首先我们需要认识到的是,很多服务器使用的是Linux系统,而作为服务器应用程序的开发者或者维护者,如果不了解Linux的基本使用,该如何进行开发或者维护呢?
当然,也有可能你听说Linux更高大上,或者是说Linux对开发者更加友好(Windows用户把刀放下),这都是题外话了。
而对于Python,它有Python解释器,Java有Java虚拟机,他们实际上对Linux的需求是没有C/C++来的高。即便如此,Linux也是值得Python/Java开发者去学习的。如果你是做C/C++开发,那么Linux是必备的,还记得当前被VC6支配的恐惧吗?
那么一般说的学Linux是要学什么呢?方向不同,要学习的内容也不同,可以大致分为这么几个方向:
运维Linux主要需要学会对服务器的基本部署,监控,配置,管理等等, 你可以认为,这些机器归你管了,7*24小时保障它能正常提供服务(删库跑路就别做了),所以7月24日请对运维的朋友好点。也欢迎运维的朋友留言纠正或者补充我的说法。
底层开发需要了解uboot,文件系统,内核等底层相关内容,主要工作可能涉及文件系统裁剪,驱动开发,内核模块定制(如内存管理,进程调度)等等。底层开发总体来说要求比较高。
应用开发自然是需要学习如何开发在Linux上运行的应用程序,如何定位Linux应用程序问题等等。
Linux的学习很多会以命令为主,因而初学会觉得枯燥甚至疑惑,鼠标点点点就能完成的事,为什么要劈里啪啦敲这么多?这里给出两点理由,也欢迎你补充:
Linux各大机制的基本原理,如进程调度,内存管理,虚拟内存,文件系统等,既然要写Linux应用程序,怎么能不了解它所在平台的主要机制呢?
关于第一阶段,你可以先定个小目标,例如一段时间内学会在Linux下进行你的日常活动(玩游戏就算了),例如编写文档,看视频等等。同时建议:
这里的学习你可以通过网上搜索资料或者购买相关书籍进行操练。如果你不想安装虚拟机或者docker,你可以通过一些在线的Linux来体验。
第二阶段也是主要的阶段,这一阶段要学习的东西非常多,多是命令的学习,这里同样可以参考《鸟哥的Linux私房菜》。不过初期阶段建议抱着一个目的去学习,就是如何在Linux写一个完整的程序,为了达到这个目的你需要学习
cd touch cp mv rm ls,find,切换目录,创建,复制,移动,删除,查看,查找等等
问题定位,除了观察最基本的打印之外,还需要知道,如何查看进程信息(ps)如何查看网络连接信息(ss,netstat),如何强制停止进程(kill -9)如何查看进程文件打开情况(lsof),如何多种姿势查看文本文件(cat,tail,more,less)等等。
脚本学习,学习Linux,就不得不学习shell脚本了,它在很多时候能毫无抱怨地帮你做事,前提是你会调教。《Linux命令行与shell脚本编程大全》也是调教教程之一。这里也有一些《必备的shell知识》
这个过程涉及到的命令非常多,但是不建议每一个都去细学,首先知道有这么一个命令即可,然后需要的时候能够快速找到用法,如通过man命令查看手册。总之,记住你的目标就是流畅地进行开发调试,而在达成这个目标地过程中,你自己自然会慢慢接触很多东西。
但是有必要说明的是,开发Linux应用程序并不一定要在Linux下编写代码,你可以选择利用samba等工具在windows和linux之间共享文件,然后再在windows下熟悉的工具中或者你认为比较强大合适的工具中编写代码,在Linux下进行编译调试即可。当然你也可以选择Linux下的IDE,或者将vim调教一下也是可以的。
第三阶段要求是比较高的,这个时候你应该学习过操作系统的相关课程(如,《现代操作系统》,《操作系统原理》等),然后你可以通过诸如《Linux内核设计与实现》,《深入Linux内核架构》,《深入理解Linux内核》等书籍进行相关概念学习,也可以通过阅读源码进行深入学习,最终,你需要了解堆和栈,内存管理,进程调度,虚拟内存,文件系统等相关知识。
以上就是三个阶段Linux相关的学习内容和建议,实际上其他相关内容的同步学习也非常重要,包括相关数据结构与算法,系统编程,计算机网络等内容的学习,否则看到很多命令的结果仍然会一脸懵逼。
限于本人知识水平有限,以上属个人建议和看法,仅供参考,欢迎留言说说你为什么要学Linux,有什么学习方法?
关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源
我以前一直自学linux,但是工作中一直没用过,进入诺西干了三年半,所有产品都是在linux上面运行和开发,终于有机会彻底接触linux了,以前对linux模糊的理解,在一个又一个项目中磨练,当入门Linux后发现,其实linux并不是很难,不过还是有点技巧,根据我的经验和知识总结下,供大家参考和学习.
1.第一个误区是文件系统的认识,中国学计算机基本上都是从windows开始的,一到linux下面就找那里是C盘,那里是D盘,这是错误的,linux的文件系统结构是预先定义的,不是根据分区放上去,而是把分区挂载到文件系统中去,所以进入Linux,发现都有home,bin,usr,tmp.var,etc等,这个和windows是根本区别,linux根目录下的home、bin、use、proc、etc等目录,这些目录的作用是什么请自己去查查,我就不多说了,linux是把分区挂接到这些文件结构上使用的,这就是和windows的区别,还有命令行下面有什么相对路径和绝对路径,这个好理解,我也不多说了。
2.字符界面的使用全靠记忆为基础,跟windows上面有窗口提示就不一样了,windows看到界面可以慢慢猜和试,但是Linux不行,最常用的命令和参数一定要烂熟于心,不要考虑,有些用的少的命令你可以不必记住,用的时候查,但是必须知道linux有这个命令的功能,这点比较苦,很多人试试就转回windows了,这个没办法必须苦练和多练,前段时间看了一个报道说线万个小时的积累才能彻底运用自如,没办法啊,搞it就是这样烧青春,没兴趣就别干了,早点转行,这个有项目强迫做是最好的。
3.linux每个命令功能都很单一,并且很专业,单独的命令很难完成复杂点的功能,但是Linux提供了管道这个神奇的东西,字符界面的操作中grep、awk、sed,这些命令和管道一起使用就让linux命令威力无穷,这点大家慢慢体会。
4.理解字符界面下什么是前台和后台进程的区别,还有环境变量在linux中的作用,profile文件的作用,全局profile,个人profile。
5.linux下面文件权限的问题,windows上很少碰到这个问题,要知道文件属性的简单常识。、
6.就是写shell脚本,这样会让你更被字符界面的操作模式彻底征服,感觉会命令行操作计算机,是这么的爽,你在windows下会点击界面绝对难以这么爽快的操作计算机,你基本上需要每次去点(当然你可以说我可以用录制屏幕的软件反复点击也可以达到,但是这很麻烦,而且功能弱的多)。
其他的很多概念都跟windows上面差不多吧,什么进程和线程啊,驱动啊,网络啊,配置文件啊,当你理解和习惯了字符界面的linux操作,绝对是提高你的计算机使用效率,最后欢迎大家吐槽
,因为考虑到要当作服务器来用,因此很容易就选定了CentOS 6,而且是在虚拟机中做实验。后面的问题是,用什么系统...
这两天开始教学生用Linux ,因为考虑到要当作服务器来用,因此很容易就选定了CentOS 6,而且是在虚拟机中做实验。后面的问题是,用什么系统来承载虚拟机?
毫无疑问,Windows是学生们最熟悉的系统,各类软件也很多,很好用。唯一的问题是:系统这种东西,毫无疑问是用的越多越容易学会。所以从这个角度说,Windows 不是最好的选择。那么Linux 发行版合适吗?
既然学习CentOS ,安装CentOS的桌面环境应该不错——但是目前学生大多数都是用笔记本,我平时用的Debian就不能识别我的笔记本上的无线网卡,也不能识别我的台式机上有限网卡,需要另外安装驱动(都是non-free的),面向服务器的CentOS 支持什么样的无线网卡还是未知——更别说还有触摸板的问题。我现在的笔记本上就是debian,对触摸板支持就不怎么地——平白多了个双指翻页功能,少了个点击功能。还有笔记本的省电功能也不知道支持得如何。
那么和CentOS 渊源颇深的fedora怎么样呢?我还线.看起来功能不多,内存倒是吃了不少,而且不太稳定——不过用过一段时间后有所好转,估计是补丁的作用。但是毕竟fedora是红帽的实验田,很多新东西都在上面,稳定性很难有保证。我当时用了一段时间后就放弃了,因为那个gnome boxs一直毛病不断,也懒得装virtualbox了,最重要的是,很多软件只有deb安装包(传说有deb转rpm的工具,不知道实际效果如何,我觉得毕竟不同发行版可能带有的软件包不同,没准儿就会有依赖问题)。放弃之后才听说,fedora 22实际上没用yum,而使用了dnf(因为想知道fedora 22在工作中使用起来怎么样,一直尽量在用图形界面的工具,没留意yum的问题。)
总结下来就是,CentOS 6有点老,6.6版也使用2.6的内核,软件仓库中的软件也老。fedora是个实验田,而且很多软件没有rpm安装包,如果编译……想想依赖关系都怀疑学生有几个能学下来。debian系列和ubuntu系列虽然更好用,但是也存在驱动问题。opensuse就不说了,吃资源的大户。其他的gentoo之类的小众更是不敢想。
再深入一点,问题就出在Linux发行版太多,桌面太多,软件管理方式太多,软件开发者没法支持所有的管理方式,驱动支持不够完善,而且各个发行版还有很多细节上的不同。
虽然我们很希望教育可以再好学。但是就像画画的,有些人只能做画工,好一点的能称为画匠,再好些可以当画师,只有基本功扎实还有自己想法和特色的,才能当画家。
是 Linux初学者经常会问的问题,其实Linux和Windows一样都属于操作系统,对于大部分人来说,对Windows操作系统十分熟悉,而对Linux操作系统没有使用过,所以觉得很难,其实,只要熟练掌握其操作命令和一些系统规则,就可以像使用Windows一样可以轻松使用Linux操作系统!想要学好Linux,需要具备以下能力:
学习任何一种语言,必备的基本功是必须要有的,一方面可以提高效率,另一方面可以拓宽思路。对于Linux基本知识的学习,对一些初学者来说是枯燥乏味的,可以通过理解再背诵的方式先进行代码及语法的学习,然后进行实践操作,必须手动输入命令行,不要借助工具,这样可以更快速有效的掌握Linux。
Linux学习的目的是应用,Linux基本知识是一些零散的技术,当没有应用在项目上时,我们无法理解他的真实价值,所以打好基本功之后,最紧迫的是多做几个完整的项目,刚开始可以是功能简单的项目,之后可以选择稍微复杂的项目,勤于动手,敢于实践,一定能学好Linux。
联机帮助任何一种教材都不会完全讲述Linux知识,一般讲的都是比较常用的或者是比较有代表性的知识,但是,我们在项目应用中往往有些功能的实现是需要一些生僻知识和技能的,那么,如何查找我们所需的知识呢,推荐查阅Linux帮助文档,主流的Linux都自带详细的帮助文档,很方便解决问题!
在Linux的学习和应用中,难免会遇到一些没有思路、不知道如何解决的问题,这时就要借助网络力量,可以通过搜索引擎搜索查找,也可以咨询资深技术人员,最终实现问题的解决,这是Linux知识积累的一个重要的途径!
,查阅英文技术文档是十分必要的,往往最新的技术都是采用英文文档的方式发布的,而且更全面,因此,对于Linux人员来说,多看一些Linux技术文档,对于掌握前沿技术和加深知识是十分有必要的!Linux学习是一个需要长期坚持不懈的过程,新的技术不断的产生,要想成为Linux大牛,必须要时刻关注Linux发展动态,掌握最新技术,才能走在行业前列!
和Windows一样都属于操作系统,对于大部分人来说,对Windows操作系统十分熟悉,而对
是 Linux初学者经常会问的问题,其实Linux和Windows一样都属于操作系统,对于大部分人来说,对Windows操作系统十分熟悉,而对Linux操作系统没有使用过,所以觉得很难,其实,只要熟练掌握其操作命令和一些系统规则,就可以像使用Windows一样可以轻松使用Linux操作系统!
学习任何一种语言,必备的基本功是必须要有的,一方面可以提高效率,另一方面可以拓宽思路。对于Linux基本知识的学习,对一些初学者来说是枯燥乏味的,可以通过理解再背诵的方式先进行代码及语法的学习,然后进行实践操作,必须手动输入命令行,不要借助工具,这样可以更快速有效的掌握Linux。
Linux学习的目的是应用,Linux基本知识是一些零散的技术,当没有应用在项目上时,我们无法理解他的真实价值,所以打好基本功之后,最紧迫的是多做几个完整的项目,刚开始可以是功能简单的项目,之后可以选择稍微复杂的项目,勤于动手,敢于实践,一定能学好Linux。
任何一种教材都不会完全讲述Linux知识,一般讲的都是比较常用的或者是比较有代表性的知识,但是,我们在项目应用中往往有些功能的实现是需要一些生僻知识和技能的,那么,如何查找我们所需的知识呢,推荐查阅Linux帮助文档,主流的Linux都自带详细的帮助文档,很方便解决问题!
在Linux的学习和应用中,难免会遇到一些没有思路、不知道如何解决的问题,这时就要借助网络力量,可以通过搜索引擎搜索查找,也可以咨询资深技术人员,最终实现问题的解决,这是Linux知识积累的一个重要的途径!
如果想深入学习Linux,查阅英文技术文档是十分必要的,往往最新的技术都是采用英文文档的方式发布的,而且更全面,因此,对于Linux人员来说,多看一些
,对于掌握前沿技术和加深知识是十分有必要的!Linux学习是一个需要长期坚持不懈的过程,新的技术不断的产生,要想成为Linux大牛,必须要时刻关注Linux发展动态,掌握最新技术,才能走在行业前列!
环境下的软件开发人员,我回答说,现在每年毕业的 大学生那么多,还招不到合适的软件开发人员吗?...
的概述 unix的了解 Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由...
系统为例,进行讲解。我的真实机是Windows系统,网络连接的详细信息如下:已启用DHCP:是 IP地址:192.168.1.2 子网掩码:255.255.255....
进程管理关键概念的理解非常模糊,比如不理解CPU、内存资源等的真正分布,具体的工作机制,这使得他们对...
内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核。做技术,从来没有终南捷径,拼的就是坐冷板凳的傻劲。 这是一个连阅读都被...
的内核模块机制允许开发者动态的向内核添加功能,我们常见的文件系统、驱动程序等都可以通过模块的方式添加到内核而无需对内核重新编译,这在很大程度上减少了操作的复杂度。模块机制使内核预编译时不必包含很...
C/C++ 方向的一些思考 三、计算机基础知识的梳理 四、C++ 方向的深入学习路线 五、项目 + 亮点 + 面试的一些思考 六、总结 前言
!很多书上或课程基本是这样的:一上来给我们展示一大堆高深莫测的代码,感觉是C语言,又感觉不是C语言。说它是C语言,这里能找到一些C的...
社团的一点贡献吧。后来,O’Reilly的 Andy Oram有意让我编写一本讲设备驱动程序的书,我接受了这个任务。尽管,真正...
内核的源码,但是在网上找了半天都没有找到理想的入门资料,后来好不容易...说明:最后两个都是
就无懈可击,病毒从本质上来说是一种二进制的可执行的程序。速客一号(Slammer)、冲击波(Blast)、霸王虫(Sobig)、 米虫...
、Solaris、Mac OS X 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等。[1] 许多人通过他们自己的经验认识到安装 Apache 服务器是件不容易的事儿。...
操作系统基础教程 清华大学信息学院计算机系 目 录 前言..........................................................................................................................................
、Solaris、Mac OS X 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等。[1] 许多人通过他们自己的经验认识到安装 Apache 服务器是件不容易的事儿。...
,所以一直想学会,这次笔记做得比较详细。另一个亮点是使用markdown语法编辑的,学会之后感觉很有帮助。另外Typora的软件安装包也在压缩文件里,推荐大家使用这个编辑器做笔记。网上看到了...
64位版,文件大小为700多M(可直接安装),故放在百度云中(文件内容为分享的链接与提取码)。IBM的产品大多都是很
下载下来,要么网速限制,要么资源不对。好不容易花钱买到,并测试成功,现提供我上传到网盘的此版本。亲测,已经成功安装到了

