红联Linux门户
Linux帮助

Linux系统管理学习路线

发布时间:2009-07-28 14:57:07来源:红联作者:苏小小
转篇文章~~有关linux系统管理学习路线的。 很有参考价值

随着Linux应用的扩展,许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。作为一个Linux系统管理员,我看了许多有关Linux的文档和书籍,并为学习Linux付出了许多艰苦的努力。当真正获得了一份正式的Linux系统管理工作后,我更加深刻地理解了Linux的灵魂:服务于多用户。Linux系统知识是非常广博的,但是只要掌握了重点知识,管理它并没有想象中的那么可怕。在下面我会将作为系统管理员的一些工作心得和总结出来的经验系统地介绍给大家。

1.学习的目的

通过Linux的学习掌握UNIX的目的想必不用多说了,在这个网络人才身价倍增的年代,想靠技术吃饭又不想掌握网络和编程技术是不明智的。当人们第一次听说Linux并跃跃欲试的时候,总会提出几个?,它是什么(What)?为什么要用它(Why)?怎样学习它(How)?作为开放源码运动的主要组成部分,Linux的应用越来越广泛,从我们平时的娱乐、学习,到商业、政府办公,再到大规模计算的应用。为了满足人们的需求,各种各样的、基于Linux的应用软件层出不穷。只要具备了LinuX的基本功,并具有了自学的能力之后,都可以通过长期地学习予以掌握。

2.从命令开始、从基础开始

常常有些朋友一接触Linux就希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的。Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习,我们可以进一步理解Linux系统。

3.选择一本好的Linux书籍

无论在论坛还是读者反馈中,我们看到最多的问题往往是某个新手,在安装或使用Linux的过程中遇到一个具体的问题就开始提问,很多都是重复性的问题,甚至有不少人连基本的问题描述都不是很清楚。这说明很多初学Linux的人还没有掌握基本功。怎样才能快速提高掌握Linux的基本功呢?最有效的方法莫过于学习权威的Linux工具书,工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的o'reilly原版Linux 图书http://www.oreilly.com.cn/,而且出版社还提供了一个非常好的路线图:linux.php">http: //www.oreilly.com.cn/guide/guide_linux.php

4.养成在命令行下工作的习惯

一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,你未来的学习之路将是以指数增加的方式增长的。对网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。 5.用UNIX思维思考Linux

由于Linux是参照UNIX的思想来设计的,理解和掌握它就必须以Unix的思维来进行,而不能以Windows思维。不可否认,Windows在市场上的成功很大一部分在于技术思想的独到之处。可是这个创新是在面对个人用户的前提下进行的,而面对着企业级的服务应用,它还是有些力不从心。多年来在计算机操作系统领域一直是二者独大:UNIX在服务器领域,Windows在个人用户领域。由此可见,用户需求决定了所采用的操作系统。不管什么原因,如果要学习Linux,那么首先要将思维从Windows的"这个小河"中拖出来,放入UNIX的海洋。

6.学习Shell

对于Shell(中文名称壳),习惯Windows的读者肯定是非常陌生的,因为Windows只有一个"Shell"(如果可以说是Shell的话),那就是Windows自己。用一句话容易理解的解释就是,shell是用户输入命令与系统解释命令之间的中介。最直观的说法,一种Shell有一套自己的命令。举一个容易理解的例子,Linux的标准Shell是Bash Shell;Solaris的shell是B shell;Linux 的Shell是以命令行的方式表现出来的。读者可能会不理解,Windows从命令行"进化"到了图形界面,那么Linux现在还使用命令行岂不是一种倒退?当初我刚刚接触Linux时就曾有过这种想法。可是后来发现,如果使用图形界面,那么分配给应用软件的资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现同样的功能是非常重要的。

下面举例说明:一台服务器有1GB内存,假设其中512MB用于处理图形界面,若要安装一个需要784MB内存的数据库软件,唯一的办法就是扩大内存。但是如果使用命令行,系统可能只需要64MB内存,其他的内存就可以供数据库软件使用了。使用命令行,不仅是内存,而且CPU及硬盘等资源的占用都要节省很多。所以,作为服务器,使用命令行是优点而不是缺点。既然Shell有这么多优点,就必须要学习它。

7.勤于实践

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一台计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界。相信对于你自己的Linux能力必然大有斩获。此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是资料被你抹掉了,否则存储的资料将永远而且立刻地记忆在硬盘中。在人类记忆的曲线中,你必须要不断地重复练习才会将一件事情记得比较熟。学习 Linux也一样,如果你无法经常学习的话,学了后面的,前面的往往忘了。对Linux命令熟悉后,可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。需要说明的是这个Linux网络对于初学者有两三台计算机即可。自己多动手,不要非要等着别人帮你解决问题。

8.学会使用文档

和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后,其中已经包含了一个强大的帮助系统,只是可能你还没有发现和使用它们的技巧。主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、UNIX的经验总结非常有参考价值,通常40%的问题可以解决。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么了。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

当查找文档时,一定要看文档是在何种版本、何种环境及何种状态下出现的何种结果。对于文档的有效性,一时还无法在操作前就知道结论如何,那么对某个专题或问题,阅读相关的多篇文章将会节省大量的时间,还可以保证尽量"干净"的环境,有效避免因为不同操作所造成的更多问题。操作时要仔细核对各个步骤及输出的结果,尽量保持与文档一致。 9.在Linux论坛获取帮助

如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问,否则只会得到到草率的回答或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。最好先搜寻一下论坛是否有你需要的文章。这样可以获得事半功倍的效果。

你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。如果得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。

10.学习专业英文

如果你想深入学习Linux,看不懂文档,因为实在是太难了。写得最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。

通过man、info等命令,可以从在线帮助中快速地获得所需要的命令和操作方法。不要害怕海量的系统帮助,仔细阅读几个man或info文档就会发现,这些帮助几乎都按照固定格式写成命令名称、参数、参数说明、使用例子、参考等。当英语成为一种习惯,就会自觉地查找或订阅互联网上感兴趣的英文材料。这样,在不知不觉中就已经和世界同步了。

11.在社区共享你的经验

随着Linux应用的扩展,出现了不少Linux社区。随着知识的不断积累,就可以把自己动手解决一些前人没有遇到的问题写出文档在网络上共享给其他读者。这个时候,也就成为了一名"高手"。Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人,Linux高手更具有鼓励新手的文化精神。

最后是笔者的Linux学习的一个路线图(roadmap):

了解Linux的基础知识,这些包含了用户管理、群组的概念、权限的观念等;

掌握100个以上的常用命令;

掌握.tgz、.rpm等软件包的常用安装方法

学习添加外设,安装设备驱动程序(比如网卡)

熟悉Linux文件系统和目录结构。

掌握vi,gcc,gdb等常用编辑器,编译器,调试器。

理解shell别名、管道、I/O重定向、输入和输出及shell脚本编程。

网络的基础包括:掌握路由概念、OSI七层网络模型、TCP/IP模型及相关服务对应的层次对于Linux学习非常重要的。然后学习Linux环境下的组网。

以上是笔者学习Linux一些经验,希望对你有些帮助。
文章评论

共有 14 条评论

  1. 刘冲 于 2009-07-31 18:17:40发表:

    引用:
    2003年曾经是我们嵌入式事业部的辉煌时期,后来被索爱和摩托罗拉挖光了。。。哎
    苏小小 发表于 2009-7-29 16:05
    唉!

  2. 苏小小 于 2009-07-31 09:38:55发表:

    [i=s] 本帖最后由 苏小小 于 2009-7-31 09:46 编辑 [/i]

    能给大家启迪很高兴~ 我也是非计算机专业的, 不过在大学的时候自学的linux,主攻方向就是系统管理维护,毕业后做的就是linux类的技术支持工作。系统管理维护是linux行业相对比较简单的进入门槛,希望更多的朋友通过学习进入linux业界工作~

  3. 774964107 于 2009-07-31 09:23:05发表:

    正想好好学习学习。

  4. kxajd001 于 2009-07-31 09:10:40发表:

    终于找到努力的方向了 哈哈 谢谢楼主了

  5. kxajd001 于 2009-07-31 08:52:32发表:

    引用:

    1、Linux 基础
    独立安装Linux操作系统 熟练使用Linux系统的基本命令 设置Linux环境变量 定制Linux的服务 了解Shell编程基础 使用vi编辑文件
    ...
    苏小小 发表于 2009-7-29 13:15

    谢谢 楼主的热心 我先学习学习了

  6. jiehe 于 2009-07-29 22:11:40发表:

    楼主没人顶。

  7. 苏小小 于 2009-07-29 16:05:45发表:

    2003年曾经是我们嵌入式事业部的辉煌时期,后来被索爱和摩托罗拉挖光了。。。哎

  8. 刘冲 于 2009-07-29 14:27:07发表:

    引用:


    嵌入式么?

    我这里有个还不错的学习方面,可以给你参考~


    1、Linux 基础
    独立安装Linux操作系统 熟练使用Linux系统的基本命令 设置Linux环境变量 定制Linux的服务 了解Shell编程基础 使用vi编辑文件
    ...
    苏小小 发表于 2009-7-29 13:15
    中标有嵌入式?

  9. 苏小小 于 2009-07-29 13:15:31发表:

    引用:
    谢谢 小小提供的思路啊 我要重新规划自己怎么学Linux了 不过我是向嵌入式发展不知道还有什么好的建议没
    kxajd001 发表于 2009-7-29 11:33


    嵌入式么?

    我这里有个还不错的学习方面,可以给你参考~


    1、Linux 基础
    独立安装Linux操作系统 熟练使用Linux系统的基本命令 设置Linux环境变量 定制Linux的服务 了解Shell编程基础 使用vi编辑文件
    2、Linux 下的 C 编程基础
    linux C语言环境概述 Gcc使用方法 Gdb调试技术 了解Makefile的编写 使用 make命令编译程序
    3、嵌入式系统开发基础
    嵌入式系统概述 配置交叉编译 配置TFTP服务 配置NFS服务 配置minicom 下载Bootloader和内核 嵌入式Linux应用软件开发流程熟悉嵌入式系统概念以及开发流程 建立嵌入式系统开发环境 编译并下载U-boot 编译并下载Linux内核 编译并下载Linux应用程序
    4、嵌入式系统移植
    Linux内核代码 平台相关代码分析 ARM平台介绍 平台移植的关键技术 移植Linux内核到 ARM平台 了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板
    5、嵌入式 Linux 下串口通信
    串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统调用 配置超级终端和MiniCOM 能够熟悉进行串口通信 熟悉文件I/O 编写串口通信程序 编写多串口通信程序
    6、嵌入式系统中多进程程序设计
    Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念 能够编写多进程程序编写多进程程序 编写一个守护进程程序 sleep系统调用任务管理、同步与通信 Linux任务概述任务调度 管道 信号 共享内存 任务管理 API 了解Linux系统任务管理机制 熟悉进程间通信的几种方式 熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输 编写一个使用共享内存的程序
    7、嵌入式系统中多线程程序设计
    线程的基础知识 多线程编程方法 线程应用中的同步问题了解线程的概念 能够编写简单的多线程程序编写一个多线程程序
    8、嵌入式 Linux 网络编程
    网络基础知识 嵌入式Linux中TCP/IP网络结构 socket 编程 常用 API函数 分析Ping命令的实现 基本UDP套接口编程 许可证管理 PPP协议 GPRS 了解嵌入式Linux网络体系结构 能够进行嵌入式Linux环境下的socket 编程 熟悉UDP协议、PPP协议 熟悉GPRS 使用socket 编写代理服务器 使用socket 编写路由器 编写许可证服务器 指出TCP和UDP的优缺点 编写一个web服务器 编写一个运行在 ARM平台的网络播放器
    9、GUI 程序开发
    GUI基础 嵌入式系统GUI类型 编译QT 进行QT开发熟悉嵌入式系统常用的GUI 能够进行QT编程使用QT编写“Hello,World”程序 调试一个加入信号/槽的实例 通过重载QWidget 类方法处理事件
    10、Linux 字符设备驱动程序
    设备驱动程序基础知识 Linux系统的模块 字符设备驱动分析 fs_operation结构 加载驱动程序了解设备驱动程序的概念 了解Linux字符设备驱动程序结构 能够编写字符设备驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动 分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备驱动程序分析 块设备的读写请求队列了解Linux块设备驱动程序结构 能够编写简单的块设备驱动程序比较字符设备与块设备的异同 编写MMC卡驱动程序 分析一个文件系统 对比Linux2.6内核与2.4内核中块设备驱动的不同
    11、文件系统
    虚拟文件系统 文件系统的建立 ramfs内存文件系统 proc文件系统 devfs 文件系统 MTD技术简介 MTD块设备初始化 MTD块设备的读写操作了解Linux系统的文件系统 了解嵌入式Linux的文件系统 了解MTD技术 能够编写简单的文件系统为 ARM9开发板添加 MTD支持 移植JFFS2文件系统 通过proc文件系统修改操作系统参数 分析romfs 文件系统源代码 创建一个cramfs 文件系统

  10. kxajd001 于 2009-07-29 11:33:09发表:

    谢谢 小小提供的思路啊 我要重新规划自己怎么学Linux了 不过我是向嵌入式发展不知道还有什么好的建议没

  11. 苏小小 于 2009-07-29 10:00:12发表:

    系统管理 应用开发 系统开发 是linux目前从业的三大方向

  12. wangyu 于 2009-07-28 16:20:42发表:

    很有帮助

  13. 刘冲 于 2009-07-28 16:18:25发表:

    引用:
    学习中,可惜用到的太少,用的命令越多,桌面化的路越长
    woka 发表于 2009-7-28 15:36
    看你干啥了,看视频就不用命令行。

  14. woka 于 2009-07-28 15:36:59发表:

    学习中,可惜用到的太少,用的命令越多,桌面化的路越长