浅谈如何学习linux

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈如何学习linux相关的知识,希望对你有一定的参考价值。

学习Linux并不难,做好规划,有合适的学习路线,坚持学习,就可以达到意想不到的结果。以下是Linux经典学习路线,希望对你们有帮助。
第一阶段:linux基础入门
1. 开班课程介绍-规章制度介绍-破冰活动;
2. Linux硬件基础/Linux发展历史;
3. Linux系统安装/xshell连接/xshell优化/SSH远程连接故障问题排查
4. 第一关一大波命令及特殊字符知识考试题讲解
5. Linux基础优化
6. Linux目录结构知识精讲
7. 第二关一大波命令及特殊知识考试题讲解(上)
8. 第二关一大波命令及特殊知识考试题讲解(下)
9. Linux文件属性一大堆知识精讲
10. Linux通配符/正则表达式
11. 第三关一大波命令及重要知识考试题讲解(上)
12. 第三关一大波命令及重要知识考试题讲解(下)
13. Linux系统权限(上)
14. Linux系统权限(下)
15. 整体课程回顾
第二阶段:linux系统管理进阶
1. Linux定时任务
2. Linux用户管理
3. Linux磁盘与文件系统(上)
4. Linux磁盘与文件系统(下)
5. Linux三剑客之sed命令
第三阶段:Linux Shell基础
1. Shell编程基础上
2. Shell编程基础下
3. Linux三剑客之awk命令
第四阶段:Linux网络基础
1. 计算机网络基础上
2. 计算机网络基础下
3. 第二阶段整体课程回顾
第五阶段:Linux网络服务
1. 集群实战架构开始及环境准备
2. rsync数据同步服务
3. Linux全网备份项目案例精讲
4. nfs网络存储服务精讲
5. inotify/sersync实时数据同步/nfs存储实时备份项目案例精讲
第六阶段:Linux重要网络服务
1. http协议/www服务基础
2. nginx web介绍及基础实践
3. nginx web精讲结束
4. lnmp环境部署/数据库异机迁移/共享数据异机迁移到NFS系统
5. nginx负载均衡
6. keepalived高可用
第七阶段:Linux中小规模集群构建与优化(50台)
1. 期中架构开战说明+期中架构部署回顾
2. 部署期中架构并完成上台述职演讲
3. kickstart cobbler批量自动安装系统
4. pptp vpn与ntp服务
5. memcached原理及部署/作为缓存及session会话共享
第八阶段:Ansible自动化运维与Zabbix监控
1. SSH服务秘钥认证
2. ansible批量自动化管理集群
3. zabbix监控
第九阶段:大规模集群高可用服务(Lvs、Keepalived)
1. Centos7系统自行安装/centos6与7区别
2. lvs负载均衡集群/keepalived管理LVS集群
第十阶段:Java Tomcat服务及防火墙Iptables
1. iptables防火墙精讲上
2. iptables防火墙精讲下
3. tomcat java应用服务/nginx配合tomcat服务部署及优化
第十一阶段:mysql DBA高级应用实践
1. MySQL数据库入门基础命令
2. MySQL数据库进阶备份恢复
3. MySQL数据库深入事务引擎
4. MySQL数据库优化SQL语句优化
5. MySQL数据库集群主从复制/读写分离
6. MySQL数据库高可用/mha/keepalved
第十二阶段:高性能数据库Redis和Memcached课程
第十三阶段:Linux大规模集群架构构建(200台)
第十四阶段:Linux Shell编程企业案例实战
第十五阶段:企业级代码发布上线方案(SVN和Git)
1. GIT管理
2. 代码上线项目案例
第十六阶段:企业级Kvm虚拟化与OpenStack云计算
1. KVM虚拟化企业级实战
2. OpenStack云计算企业级实战
第十七阶段:公有云阿里云8大组件构建集群实战
第十八阶段:Docker技术企业应用实践
1. Docker容器与微服务深入实践
2. 大数据Hadoop生态体系及实践
第十九阶段:Python自动化入门及进阶
第二十阶段:职业规划与高薪就业指导
参考技术A linux如今在IT行业中发展势头强劲,也是入行门槛相对较低的一门学科。今天就来说说如何学习linux。

首先看你是自学还是报班学习了。自学的话也可以,但并不是说就是一分钱不花,白嫖那种,那基本学不了什么有用的东西,网上有很多白嫖的,大部分是引流课,就是吸引你去报名的,不会让你学到什么核心的技术。所以自学的话也是需要买一些资料的,渠道我就不说了,有很多,但腾讯课堂会相对靠谱点。另外就是自学比较考验毅力,很多人坚持不下来,一是学习周期太长,二是遇到问题没人帮助解决,很苦逼的一件事。所以如果坚持不下来的话,可以选择报班学习。报班的话有老师时刻监督你,而且会有一套比较合理的学习体系,让你在段时间内学到更多知识,遇到问题也会有老师帮你解决,学习效果和学习效率都是自学不能比的。
但报班的话就涉及一些机构选择了,建议你多了解一下机构的口碑、特别是学习过的学员的评价。
linux学习内容我就不给你列举了,大部分机构的都大差不差,但是你要明白学习大纲可以copy,但是讲的深浅、多少一样不一样就不一定了,有些机构的大纲完全是copy同行比较牛的机构的,但是讲师的能力不行,讲课的质量一般,学员也是学不到实质东西的。
参考技术B 一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
如何选择版本:北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
【注】现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮:)
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的“天才unix”的气质。
参考技术C linux学习路线
第一阶段零基础入门

第二阶段Linux系统管理&shell编程

第三阶段百万级访问量集群实战

第四阶段千万级访问量核心集群实战

第五阶段一切核心技术的底层支持:云计算集群

第六阶段大数据运维

第七阶段Python自动化和毕业指导

Linux新手必看:浅谈如何学习linux

本文在Creative Commons许可证下发布

一.起步
  首先,应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
问题1:版本的选择

  北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的,linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。原则是:我们没有必要把时间浪费在"装系统"上而应集中精力学习最有用的东西。

//注:现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错。

如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择

我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的"天才unix"的气质。

二.进阶
掌握至少50个以上的常用命令;
理解shell管道"|",文件流重定向">"及追加">>"等;
熟悉Gnome/KDE等X-window桌面环境操作;
掌握.tgz.rpm.biz等软件包的常用安装方法;
学习添加外设,安装设备驱动程序(比如modem);
熟悉Grub/Lilo引导器及简单的修复操作;
熟悉系统固有目录的名称及学会用mount命令访问其他文件系统;了解vi,gcc,gdb等常用编辑器,编译器,调试器学习linux环境下的简单组网;

建议:买一本不需要太厚的linux教材,大致可以满足要求。(现在的书越来越多了,还带很多图,我当时可没这么多书:)

三.高级应用
澄清一些概念:
linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识

我个人认为比较重要几种linux语言
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]。因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装。你必须能无障碍的阅读大量的英文技术文档,在搜索引擎找到的英文网站和网页中熟练的检索。最好能有用英文直接交流的能力,摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距
2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上这也是CS中的一个重要思想。

此外,shell可以实现工作自动化,这个概念也比较重要sed,awk用来处理文本,历来很常用

3.Perl/PHP
漂亮的脚本, CGI的首选,比ASP好,应用面很广

4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的

5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要。要是走核心路线的话,才c\c++,asm最重要

6.Java,Python,Tcl,XML

*系统管理篇
  在熟悉linux的基础上还需要掌握至少一种unix。我首推Solaris,其次是FreeBSD。比如运营级系统一般是Solaris+Oracle/DB2之类的学习apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind等各种应用服务器的构架及电子商务的应用熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群等各种企业级应用解决方案熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员

各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内搜索引擎寻找最新文档,以避免错误和漏洞有几本技术大全和技术内幕我认为都是这方面不错的书

四、深入学习linux

我个人理解的读linux内核需要的基础:在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种), 建议再看一下《The C Programming Language》Second Edition这本圣经/*如果想学缓冲区溢出,这点C的功力可能是不够的*/还有,《C陷阱与缺陷》,《C专家编程》,《C\C++深层探索》。反正经典书看多了是没有坏处的

2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍有80x86 Intel语法的基础就行,有兴趣可以看看Intel的官方白皮书

3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了

4.操作系统原理
看懂这个再去读linux吧

5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要

6.了解linux/unix
我想至少你要会操作吧,了解unix的API

7.软件工程/编译原理

这方面的经典书去www.china-pub.com可以搜到很多我觉得APUE这种书不适合初学者,还是先看看UPE之类的吧

APUE:
《advanced programming in the unix environment》
《unix环境高级编程》
作者:W.Richard.Stevens共有6本经典书,尊为"圣经"他的书为全世界黑客所拜读!

UPE:《unix programming environment》
《unix编程环境》比较适合初学者的,深入浅出,其中有一些比较重要的思想
另外,介绍linux下应用层编程的书也有很多,比如
《GNU\Linux编程指南》,redhat,redflag出的书........... 经典书还有很多很多......《 操作系统:设计与实现》//上海交大的考研参考书目,讲
Minix的unix操作系统设计
《4.4BSD操作系统设计与实现》
《昂莱氏unix源代码分析》
《ulk:understanding the linux kernel 》(2nd)深入理解linux内核
《linux设备驱动程序 (2nd)》
《linux内核源代码情景分析》
《保护方式下的80386及其编程》

五、上升到工程化Linux下环境开发:

一、 科学哲学和管理哲学
【1】 “程序开发心理学”(The Psychology of Computer Programming : Silver Anniversary Edition)
【2】 “系统化思维导论”(An Introduction to Systems Thinking, Silver Anniversary Edition)
【3】 “系统设计的一般原理”( General Principles of Systems Design)
【4】 “质量·软件·管理(第1卷)—— 系统思维”(Quality Software Management:Systems Thinking)
【5】 “成为技术领导者——解决问题的有机方法”(Becoming A Technical Leader:An Organic Problem-Solving Approach)
【6】 “你的灯亮着吗?-发现问题的真正所在”( Are Your Lights On? How to Figure Out What the Problem Really Is)
【7】 “程序员修炼之道”(The Pragmatic Programmer)
【8】 “与熊共舞:软件项目风险管理” (Waltzing With Bears: Managing Risk on Software Projects)
【9】 “第五项修炼: 学习型组织的艺术与实务”( The Fifth Discipline)

二、 计算机科学基础
【10】 “计算机程序设计艺术”(The Art of Computer Programming)
【11】 “深入理解计算机系统”(Computer Systems A Programmer‘s Perspective )
【12】 “算法导论”(Introduction to Algorithms, Second Edition)
【13】 “数据结构与算法分析 —— C语言描述(原书第2版) ”(Data Structure & Algorithm Analysis in C, Second Edition) 31
【14】 “自动机理论、语言和计算导论(第2版)”(Introduction to Automata Theory, Languages, and Computation(Second Edition))
【15】 “离散数学及其应用(原书第四版)”(Discrete Mathematics and Its Applications,Fourth Edition)
【16】 “编译原理”(Compilers: Principles, Techniques and Tools)
【17】 “现代操作系统”(Modern Operating System)
【18】 “计算机网络(第4版)”(Computer Networks)
【19】 “数据库系统导论(第7版)”(An Introduction to Database Systems(Seventh Edition))

三、 软件工程思想
【20】 “人件”(Peopleware : Productive Projects and Teams, 2nd Ed.)
【21】 “人件集 —— 人性化的软件开发”( The Peopleware Papers: Notes on the Human Side of Software)
【22】 “人月神话”(The Mythical Man-Month)
【23】 “软件工程 — 实践者的研究方法(原书第5版)”(Software Engineering: A Practitioner‘s Approach, Fifth Edition)
【24】 “敏捷软件开发-原则、模式与实践”(Agile Software Development: Principles, Patterns, and Practices)
【25】 “规划极限编程”( Planning Extreme Programming)
【26】 “RUP导论(原书第3版)”(The Rational Unified Process:An Introduction,Third Edition )
【27】 “统一软件开发过程”(The Unified Software Development Process)

四、 软件需求
【28】 “探索需求-设计前的质量”( Exploring Requirements: Quality Before Design)
【29】 “编写有效用例”(Writing Effective Use Cases )

五、 软件设计和建模
【30】 “面向对象方法原理与实践”
【31】 “面向对象软件构造(英文版.第2版)”(Object-Oriented Software Construction,Second Edition )
【32】 “面向对象分析与设计(原书第2版)”(Object-Oriented Analysis and Design with Applications,2E )
【33】 “UML面向对象设计基础”(Fundamentals of Object-Oriented Design in UML)
【34】 “UML精粹 —— 标准对象建模语言简明指南(第2版)”( UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd Edition))
【35】 “UML和模式应用(原书第2版)”(Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, Second Edition )
【36】 “设计模式精解”(Design Patterns Explained)
【37】 “设计模式:可复用面向对象软件的基础”( Design Patterns:Elements of Reusable Object-Oriented software)
【38】 “面向模式的软件体系结构 卷1:模式系统”( Pattern-Oriented Software Architecture, Volume 1: A System of Patterns)
【39】 “软件设计的艺术”(Bringing Design to Software)

六、 程序设计(这个因人而异,术业有专攻,学学C#、JAVA也不错啊)
【40】 “编程珠矶”(Programming Pearls Second Edition )
【41】 “C程序设计语言(第2版·新版)”(The C Programming Language )
【42】 “C++ 程序设计语言(特别版)”(The C++ Programming Language, Special Edition)
【43】 “C++ Primer (3RD)”
【44】 “C++语言的设计和演化”( The Design and Evolution of C++)
【45】 “C++ 编程思想(2ND)”(Thinking in C++ Second Edition)
【46】 “Effective C++” & “More Effective C++”
【47】 “C++编程艺术 ”(The Art of C++ )
【48】 “Java 编程思想:第3版”( Thinking in Java, Third Edition)
【49】 “Effective Java”

七、 软件测试
【50】 “测试驱动开发(中文版)”(Test-driven development:by example )
【51】 “面向对象系统的测试”(Testing Object-Oriented System: Models, Patterns, and Tools)
【52】 “单元测试之道Java版 —— 使用Junit”/ “单元测试之道C#版——使用NUnit” (Pragmatic Unit Testing:In Java with JUnit / Pragmatic Unit Testing:In C# with NUnit )

八、 软件维护和重构
【53】 “重构-改善既有代码的设计”(Refactoring: Improving the Design of Existing Code)

九、 配置管理和版本控制
【54】 “版本控制之道 —— 使用CVS”(程序员修炼三部曲第一部:Pragmatic Version Control Using CVS)

十、 领域专题(网络、平台、数据库相关) 99
【55】 “TCP/IP详解”( TCP/IP Illustracted)
【56】 “Unix网络编程”(UNIX Network Programming)
【57】 “UNIX环境高级编程”(Advanced Programming in the UNIX Environment) 102
【58】 “UNIX 编程艺术”(The Art of Unix Programming)
【59】 “数据访问模式 —— 面向对象应用中的数据库交互”



































































































以上是关于浅谈如何学习linux的主要内容,如果未能解决你的问题,请参考以下文章

浅谈如何学习JavaScript?

浅谈如何更好学习前端

浅谈Linux学习中解决问题的学习方法

浅谈:从为什么学习python到如何学好python

以 Kotlin 为例浅谈如何学习程序语言

菜鸟学习计划浅谈之Linux系统