如何学习Linux操作系统

也许是工作需要,也许是对开源的兴趣,也许是好奇心,一不小心跨入开源领域,进入了Linux系统世界,你会发现不一样的精彩。

一、为什么要学习Linux?

1、如果你是名电脑爱好者,想把计算机技术玩的更好一点,就必须了解操作系统,操作系统是一个软件,给我们提供了应用程序和硬件打交道的平台,了解他非常重要。现在主流的操作系统有Windows,Unix,Linux,MAC OS(其实也是基于BSD的Unix系统)。这几个系统除了Linux是开源的,其他的都是商业封闭的,所以你很难完全了解他们。

2、学习计算机技术要避免工具式学习,而要采取系统式学习。工具式学习比如学习Photoshop,而系统化学习比如学习Linux系统。

3、也许有人会说,到处都是Windows,学习Linux有什么用。的确在PC端,Windows占据的90%的市场份额,可以在服务器端,60%的服务器采用Linux,90%的超级计算机采用的Linux。而且在移动领域,Linux市场越来越强。Android系统是基于Linux内核+Busybox软件实现的。可以看出Linux有着广泛的前景。

4、随着云计算、大数据产业的快速发展,Linux已开始取代Unix成为最受青睐的操作系统。笔者想象一下,未来五年,所有复杂的计算将会转移到服务器端,客户端会演化成一个接口。

二、怎么学习Linux?

笔者建议学习Linux,不是为了鼓吹Linux有多好,比Windows先进。其实Windows在图形上要比Linux流行的多,其丰富的软件造成他现在地位原因。Linux有着自己的优势,那就是开源免费。企业为什么要用Linux,其实是本着节约成本和创造价值的目的,加上Linux众多开源软件,及其设计理念的优势,造就了他在服务器领域的流行。

1.放下Windows思维,从零开始学习Linux

如果你在Linux系统里面也是用鼠标点点完成一个操作的话,那你还是在用Windows。图形化在Linux只是一个软件,可以完全分离开。Linux的设计思想是Unix设计模式,比如一切皆文件,没有注册表概念等等。

学习不能急于求成,只有从基础学起,理解每一个命令的用法和整个系统的构架,你才会了解这些为什么要这么设计,了解开源世界的美,把他用的实际生活中才能发挥稳定和高效。

2.习惯命令行用法,坚持每天学

Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的。虽然命令有很多,我们只要掌握常用的几个,慢慢你就会习惯,了解到这种方法的高效。比如grep,sed,awk三个命令你玩好了,精通了脚步编程,你就可以横行天下。

不要贪多,每天学习一章,哪怕是一个命令。除了按书上或者讲座学习练习外,上网搜索其所有用法,把他弄清楚,吃透。坚持一年,你就是Linux高手,坚持十年,你就是Linux专家。

3.选一个版本, 经常实践操作

Linux发行版本很多,其大同小异,不必求多。笔者建议学习Centos系统。下载一个Centos镜像光盘,安装一个VMware Workstation虚拟机就可以开始学习了。

如果你只看不动手,学了后面的,前面的忘了。对Linux命令熟悉后你可以开始搭建一个自己的小的Linux系统,这是最好的实践方法。建议对照视频反复操作,记住,看了不等于理解,理解了不等于会操作,操作时候你才会发现各种各样的问题,解决了问题才是成长的关键。

4.善于解决问题,协同交流成长

学习Linux过程中就是不断发现问题,解决问题的过程,通常采取: 

 a.善于使用系统自带的帮助手册。安装了一个完整的Linux系统后其中已经包含了一个强大的帮助(包括手册页和FAQ),仔细阅读文档后40%问题都可在此解决。 

 b.查阅经典工具书和Howto。特别是Howto是全球数以万计的Linux、Unix的经验总结,非常有参考价值,通常40%的问题同样可以解决。 

c.到论坛及群上寻求有助。如何在论坛上获得帮助,需要说明的是:你要有周全的思考,准备好你的问题,不要草率的发问,否则只会得到到草率的回答或者根本得不到任何答案。

d.直接Google搜索,其实也是最常用的方法,你要学会关键字搜索技巧。

Linux学习可以是个人自学,但有同伴交流是最好了,参与大家的技术讨论一直是一件提升自己能力的快速道路。因为有这些技术讨论,你提出了意见,不论讨论的结果你的意见是对是错,对你而言,都是一次次的知识成长的过程。

5.观看视频学习,和马哥一起成长。

个人学习Linux,无论是看书自学,网络实践,都是一个费时费力的过程。弄不好还会挫伤大家的兴趣。如果有一位导师指导你学习那就再好不过了。笔者推荐马哥Linux,马永亮老师的Linux课程班不同于传统的课堂,他讲课深入浅出,能用最简洁的语言讲清原理,最直观的方式边讲边操作,让你了解Linux的哲学思想。笔者看过全程班的讲课,的确不愧为Linux培训界第一。

附录:马哥教育Linux运维培训网络班-资深全程班课程内容(90G)

一、Linux系统基础及系统管理

1、操作系统发展史,系统架构平台概览; Linux起源、理念、发展历史及各发行版;

2、Linux基础知识、基本命令、获得使用帮助及文件系统组织结构等;

3、Linux用户、组及权限的基础及相关高级话题,详细讲解useradd/userdel/chmod/chown/usermod/chage/umask等相关命令;

4、Bash基础及配置、标准I/O、管道及shell编程基础;

5、文本处理工具的概念、简单文本编辑器nano的使用、vim编辑器入门、进阶及常用技巧;

7、Linux系统进程管理基本原理及相关管理工具如ps、pkill、top、htop等的使用;Linux中的作业控制;

8、Linux任务计划的实现,讲解at、cron及anacron的使用;

9、文件查找的利器find命令基础及高级应用;

10、TCP/IP网络基础、TCP有限状态机状态转换原理、Linux网络属性配置及网络客户端工具详解;

11、Linux系统软件包的配置及管理、rpm及yum命令的使用及yum库的制作详解;

12、常见磁盘接口类型及相关设备特性、Linux磁盘管理、Linux文件系统基础、进阶与高级管理;文件系统相关管理工具使用详解;

13、系统初始化详细流程精解、内核基础及内核的定制(内核的定制、编译及安装);对比说明RHEL5与RHEL6系统启动过程之区别;

14、X11、SSH、VNC、CUPS系统服务;putty、SecureCRT或Xmanager等ssh客户端的应用;

15、文件扩展属性及ACL的应用;

16、RAID级别及相关概念详解、Linux下软RAID的实现及相关命令行工具的使用;硬件RAID基本原理及配置要点;

17、LVM2基本概念及其实现原理、LVM2相关命令行工具的使用;

18、Linux日志系统;常见日志管理工具的使用;

19、SELinux相关概念、原理及相关工具(如setenforce等)的使用;

20、RHEL系统kickstart文件、自动化安装部署及安装盘的定制;

21、Linux常见系统及网络故障排除(TroubleShooting);

22、RHEL或CentOS系统定制式精简,实现从零开始按需重组大小、功能等可定制的Linux版本,借以实现从微观角度理解Linux构成及运行原理之目的.

二、shell编程入门及进阶(穿插大量以实现系统自动化管理为目的脚本案例)

1、bash基础及工作环境的定制,详细讲解profile、profile.d、bashrc、.bash_profile及.bashrc等配置文件的功用;

2、bash脚本结构及运行;bash变量(局部变量、本地变量、环境变量、位置参数变量及特殊变量)及其表达式;

3、条件测试(整数测试、字符串测试及文件测试);if和case选择分支;

4、for、while、until循环及使用continue和break来控制循环机制;

5、在bash中使用函数,以及利用函数来实现bash库;

6、脚本控制:在脚本中捕获信号并完成自定义处理;

7、脚本执行结果输出:printf命令的使用及在脚本中使用颜色;

8、bash脚本运行时配置:在脚本中使用选项;

9、bash数据处理:在脚本中使用数组;

10、bash脚本调试及debug功能的实现;

11、窗口编程:dialog文本对话框命令及shell编程中的应用;

12、基本正则表达式、扩展正则表达式及grep命令精讲;

13、sed命令及awk命令精讲;

说明:此部分中的内容不会作为一个单独的部分呈现,而是贯穿于整个课程;其中基础性部分主要在前面第一部分内容中讲解,高级部分及大量的应用在后面部分的内容中会不定期出现。

三、Linux平台常见网络服务及安全管理

1、系统性能/安全、安全威胁模型和保护方法;系统服务访问控制及服务安全基础;

2、加密/解密原理及数据安全、密钥交换的实现、PKI基础概念及openssl使用详解;

3、DNS(BIND9)服务原理精讲,BIND服务配置、高级应用和安全,并实现以view为核心的适应国内运营商间解析接驳的智能DNS系统;(马哥团队实现的项目:www.dns.la,国内应用仅次于dnspod的智能DNS系统;)

4、ftp服务基本原理,以vsftpd为例讲解ftp服务的实现,包括虚拟用户及相关权限定制、安全配置及ftps等高级话题;

5、http协议原理、请求/响应报文格式、SSL会话的原理及https协议;apache基础、各MPM模型对比、安装配置及各参数详解;apache虚拟主机的实现及安全应用(https、suEXEC等);

6、PHP环境配置基础及与apache整合的多种途径;MySQL服务入门;LAMP架构的实现;以编译的方式定制LAMP等;

7、nginx的特性详解,nginx的基本配置、虚拟主机的实现、URL地址重写、及安全应用以及LEMP的实现等;

8、web应用框架django基础概念及其与apache(mod_python及uWSGI等方式)或nginx的整合;

9、VPN的基本原理及类型、OpenVPN的配置及其应用;

10、iptables/netfilter安全体系工具精讲;iptables命令的基本应用,如各子命令的功能、通用匹配、扩展匹配及跳转目标等;

11、iptables/netfilter高级应用,包括连接追踪、网络地址转换、及多种扩展模块的使用以及七层过滤等高级话题;

12、RPC的基本概念;NFS服务基础原理及配置;samba服务基础原理及配置;

13、电子邮件系统原理精讲;postfix/dovecot等邮件服务工具的配置和应用,smtps、pop3s、imaps等高级安全应用的实现;以案例为基础讲解postfix、mysql、ldap、虚拟域、虚拟用户、身份验证、邮件加密、webmail、POP、IMAP服务的整合应用;

14、nss的原理及配置;pam的基础概念、常用模块讲解及系统默认的配置讲解;

四、MySQL数据库从入门到精通

1、关系型数据库系统及SQL相关概念详述;MySQL特性、发展历史及体系结构详解;

2、MySQL安装:rpm方式、编译好的通用二进制方式及编译的方式;单实例MySQL服务的启动及停止等服务控制;

3、MySQL配置文件格式详细说明;MySQL服务器变量、状态变量的作用域及查看方式,服务器变量值的调整方式;

4、MySQL的sql_mod;管理MySQL数据库、表、视图和索引(DDL语句);管理MySQL数据(DML语句);

5、多表查询、联合查询及子查询;

6、MySQL用户管理:创建和删除、权限的授予及取消、资源使用能力控制等;

7、关系数据库的事务、在MySQL中使用事务;MySQL锁及其应用;MySQL隔离级别及其特性详解;

8、存储引擎及其属性配置、MySQL表维护;

9、数据库配置类型及配置策略详解;mysqldump、xtrabackup、LVM快照等备份工具在MySQL数据库备份中的使用;MySQL数据库恢复;

10、关系型数据库索引类型详解;MySQL查询分析及其索引的定制;

11、MySQL日志文件管理:查询日志、慢查询日志、二进制日志、中继日志、事务日志及错误日志;

12、MySQL复制精讲,包括主-从、主-主等架构及基于SSL加密传输的实现,其它常见的架构形式及优劣比较;MySQL 5.6基于GTID的复制技术及多线程复制技术;

13、MySQL读写分离、连接池及sharding技术:介绍mysql_proxy、sql_relay、amoeba及cobar等;以前三者其中之一来介绍读写分离的实现;

14、中小型企业低成本的MySQL高可用集群的解决方案:MySQL+corosync/openais+drbd的原理及其实现;

15、PhpMyAdmin、mysql-gui-tools和MySQL Front等第三方工具的使用;

16、以MySQL应用为中心调优硬件、系统及MySQL服务;

五、集群/存储专题

1、详述Linux系统集群体系结构、类型及应用方案;

2、Linux虚拟服务器LVS原理,详细讲解其类型及调度方法等;

3、LVS-NAT、LVS-DR的配置及以之实现apache、nginx、ssh等负载均衡应用,并详细比较此两种实现方式的不同及各自的应用场景;

4、LVS持久性连接应用环境理论及实现;FW方式实现LVS的affinity应用;

5、编写bash脚本实现对realserver健康状态监控,实现realserver故障隔离及自动重新上线等功能;

高可用服务专题

6、高可用集群原理及Heartbeat、openais/corosync等解决方案原理精讲;

7、Heartbeat安装、配置及以web为例实现高可用环境;

8、Hertbeat资源配置方式及维护;使用heartbeat-gui实现基于图形化方式对集群进行管理;

9、Corosync/OpenAIS高可用集群解决方案原理及实现方法;基于案例详解生产环境中应用Pacemaker配置实现高可用集群的方法;(一步步以完全手动的方式实现Linux系统上的HA集群);

10、资源管理原理、类别、LSB脚本的编写等及资源管理的定义;基于pacemaker的高可用环境下资源管理详解;Stonith原理、类别及其实现方法;

11、RHCS集群套件工作原理精讲,并从微观角度介绍其与前述解决方案的异同;RHCS集群的部署演示;

12、LVS和corosync集成实现高可用director及负载均衡的大规模应用服务器集群,包括ldirectord的应用等;

13、高可用服务解决方案keepalived及其实现,以nginx为例讲解其双主模型的实现;

14、RAID、NAS、SAN、iSCSI等存储原理及基于Linux的iSCSI服务器的实现及应用;讲解openfiler、freenas或Nexentastor等开源解决方案的应用;

15、GFS2集群文件系统的原理;基于iSCSI讲解GFS2的实现;

六、http代理加速、应用服务器及监控系统

1、http协议的缓存原理及常用首部、常用见的反向代理解决方案的功能对比等;

2、varnish服务原理、安装配置;varnish状态引擎详解及VCL编程详解;varnish系统参数高速及生部环境中的部署方案;

3、Nginx upstream和proxy模块负载均衡和反向代理部署精讲;

4、haproxy精讲:haproxy功能与特性、常用配置指令、常用调度算法及ACL等;

5、Memcached服务及其在web服务体系中的应用;

6、java、jsp、servlet、HotSpot JVM、J2SE、J2EE及web container等相关技术要点详解;

7、Tomcat体系结构、安装配置、连接器及与apache或Nginx的整合;Tomcat各集群模型及其实现案例;

8、jetty体系结构、安装配置及与apache或nginx整合;

9、分布式文件系统详述;常见分布式文件系统功能与特性对比说明;以moosefs为例演示分布式文件系统的应用;

10、CDN技术实现原理;

11、可扩展web服务设计及相关解决方案选择(日均10万PV发展至100万PV,再到1000万PV站点的扩展思路及部署要点);大规模、高并发、高可用web服务器群的体系结构、设计及其实现;

12、Web环境压力测试、系统性能评估、结果分析及优化;

七、虚拟化及IaaS云技术专题

1、X86平台虚拟化技术难点及相关解决方案原理详解:CPU虚拟化、内存虚拟化及IO虚拟化,虚拟化种类及相关特点等;

2、Xen虚拟化基础;Xen虚拟化技术中调度、中断、内存、IO、网络及块设备的虚拟实现原理;

3、Xen在RHEL6或CentOS6上的安装、配置及简单应用;

4、Xen环境中虚拟存储和虚拟网络设备的配置及管理详解;qemu-img工具详解;

5、Xen管理工具栈xm及xl从入门到精通;

6、XenServer简介;

7、KVM虚拟化基础;KVM虚拟化技术实现原理;

8、KVM的安装、配置及简单应用;

9、基于libvirt、virt-intall和virt-manager工具栈管理kvm;

10、基于qemu-kvm命令行工具管理kvm;

11、基于KVM应用的Linux系统优化;

12、生产环境中虚拟化技术的应用方案及常用管理工具说明;

13、IaaS、PaaS、SaaS云技术以及彼此间联系与区别;

14、OpenStack云栈详解:Keystone、Glance、Nova、Swift、Horizon等组件的功能、特性及协作流程;

15、OpenStack的网络模型及Grizzly中的Quantum服务;

16、OpenStack的块存储服务及Grizzly中的Cinder服务;

17、具有独立控制节点、多计算节点及独立对象存储节点的全功能OpenStack环境部署;

八、自动化运维相关专题

1、自动化运维概述:高效地管理IT资产并满足复杂多变的业务需求、构建高效IT系统、快速发现和解决IT系统中出现的问题等; 网络、系统及服务监控类工具

2、SNMP协议原理及Linux系统上的配置及实现应用案例;

3、网络、系统及服务等相关指标的监控模型及体系结构;

4、zabbix监控系统详解;

5、rrdtool详解;cacti安装、配置;编写脚本基于cacti完成监控功能的定制;

6、Nagios入门、进阶及高级应用;nagios监控插件的开发;

预备类工具

7、RHEL/CentOS平台上的无人值守安装脚本Kickstart;基于PXE完成系统自动化安装;

8、Cobbler服务原理、配置及应用;

配置管理类工具

9、fabric命令;

10、使用Func(Fedora Unified Network Controller)完成服务器自动化远程管理详解;

11、开源的软件自动化配置和部署工具puppet详解;

12、saltstack(相当于Func加强版+Puppet精简版)详解;

13、Genome简介;

说明:如果课堂时间不够充分,第4和个第5个将会以视频方式提供,而第11个和第12个则只会选讲一个;

九、Linux系统原理基础及系统调优

1、PC Server结构概述及Linux系统体系结构概述;

2、Linux系统进程相关理论(如调度方法、抢占、优先级、调度类别等),进程性能监控、分析及调优方案;

3、Linux内存架构体系(如内存区域、MMU、TLB、slab、伙伴系统、页及页框等相关理论知识),内存使用率实时监控、性能分析及调优方案;

4、Linux系统IO体系架构及设备驱动;磁盘IO体系架构(如缓存架构体系、pdflush、bio、磁盘队列、IO调度器等相关理论知识),磁盘性能实时监控、分析及调优方案;

5、Linux虚拟文件系统体系架构及相关理论知识(如块、inode、日志等)、常见文件系统类型及使用iozone等工具对文件系统性能的评估与比较,并结合实际项目需要选择最佳文件系统;

6、中断及异常相关理论知识(如信号、IRQ、进程上半部和下半部、中断处理器等)及在系统调优中的应用;

7、Linux网络子系统架构体系及相关理论知识(如socket buffer、NAPI、kernel buffer等),网络子系统性能的监控、分析及调优方案的设计及实现;

8、基于Linux系统调优理论知识进行实际项目调优,如MySQL服务器的调优(系统部分)等;

9、系统性能评估方法、指标及常用工具及以之评估操作系统性能的方法;

十、海量数据并行处理系统

1、MapReduce基础概念、运行框架、调度模型等;

2、HDFS基础概念、命令行接口、数据序列化、数据流等;

3、Hadoop伪分布式及完全分布式模型的构建、测试及应用;

4、生产环境中Hadoop多种常用属性的调优及其注意事项等;

5、Hadoop生态系统及常用组件说明;

6、Hadoop调度算法及其选用;

7、Hadoop硬件选型要点;

8、NoSQL数据库特性、技术流派及代表性项目;Zookeeper功能、特性、安装配置及应用;列式数据库HBase基础原理、安装配置及其应用; 9、数据仓库Hive基础原理、安装配置及应用;

10、讲解flume/scribe/chukwa/kafka日志收集系统其中之一;

11、使用工具完成Hadoop自动化部署;

十一、补充类专题(根据空余时间选择讲解)

1、rpm包SPECS文件详解、RPM包制作及包签名的实现;

2、LDAP协议原理及常见的实现;OpenLDAP的安装、配置及应用;

3、基于busybox和内核定制制作微型Linux系统,并通过编译的方式为之提供相应的服务以进一步理解Linux系统;LFS系统及其实现;

4、MongoDB体系结构、安装配置及应用;

5、Redis体系结构、安装配置及应用;

6、ats功能、特性、安装配置及应用;

7、logstash:功能丰富的日志收集分析系统;

8、python脚本编程基础;

十二、职业素质课程:

1、职场礼仪;

2、简历撰写格式及要注意的问题;

3、面试流程、常见问题应对方式及模拟面试;

4、针对每个人进行性格分析,根据性格给出职场中的注意事项。

5、职场技巧培训,与同事和领导相处技巧,如何把握时机,正确的提出加薪、升职等要求。

已有 0 条评论 新浪微博
滚动至顶部