渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(1)
前情回顾:前面花了九篇的内容对Java基础进行了一个回顾,收获很大。例如对封装、继承、多态等面向对象特征理解更深了,对API的认识和源码的了解更清晰明了了。最后再次推荐有一点点Java基础或者想复习Java的童鞋看看林信良老师的《JDK7学习笔记》,非常赞。(这样推荐,不会被认为是广告吧。咳咳)Java远远还没复习完了解够,会在以后继续进行。
在之前的日志就讲过,我其实蛮早就想接触Linux的了,只不过一直没下定决定去弄,也没有一定的外力驱动(也可以理解成项目驱动)。刚好论文指导老师让我搞的那个毕业设计题目,必须要在Linux下完成,所以就借这个契机,开始我们的Unix&Linux之旅吧!
——————————————————————————闲聊结束———————————————————————————
这一个专题的名字叫Unix&Linux入门,主要是讲一些比较基础的东西。选的一本主要参考资料叫《Unix入门经典》,大家有兴趣可以考虑买一本看看。另外也借了同学的《鸟哥的Linux私房菜》基础学习篇作为我的辅助资料,而ndnSIM作为我的毕设核心研究开源项目,也会在系列中作为例子举出。
第一章:Unix基础
第一节:Unix操作系统组件
本来书上一开始是以Unix的发展历史和版本介绍开头的,但是考虑到书上的内容比较硬,而且我也没有足够的资料改编成生动有趣的故事,所以就直接看Unix操作系统组件。
构成Unix操作系统的各个组件有内核、shell、文件系统以及实用程序(应用程序)。
Unix内核:是Unix系统的最底层。它提供了系统的核心功能并允许进程(程序)以一种有序的方式访问硬件。
shell:shell是一个命令行解释器,它使得用户能够与操作系统进行交互。
文件系统:文件系统使得用户能够以统一的方式查看、组织以及保护存储设备上的文件和目录并与其进行交互。
实用程序:是一些应用程序,它们使得用户能够在系统上进行工作(跟shell不一样的,不要混淆)。包括web浏览器、文字处理程序、e-mail程序等。
这些东西,《Unix入门经典》上也没讲多少,建议大家好好看看操作系统的基础知识,我买了一本资料,打算通读一遍之后再贴总结出来。
第二节:系统启动过程
笔试题里常常会出现Linux系统启动过程的简述题目,其实,从电源关闭状态到操作系统完全可用所发生的一切称为启动过程(boot process)。用最简单的术语来说,启动过程由只读存储器(Read-Only Memory,ROM,NVRAM,或固件)对某些程序的加载所组成,这些程序用于实际启动(开始)系统。该初始化步骤(通常称为自展)识别系统上可启动或开始的设备。一次只能从一个设备上启动或开始,如果一个启动设备失效,就可以使用另外一个已经识别的设备。
接着,引导程序将控制权转移给内核。最初的引导过程完成之后,引导程序开始加载Unix内核,内核通常位于系统的根分区。接下来是初始化阶段,在这个阶段中启动系统进程和脚本。init进程是系统开始的第一个工作,它是其他所有进程的父进程。为了让系统运行,它必须一直处于运行状态。初始化阶段完成之后,系统开始运行并准备接收用户登录。如果是本地登录,将会在系统上看到登录提示符或者图形登录界面。
第二章:鸟哥谈如何学习Linux
第一节:从头学习Linux基础的七个步骤
步骤一:计算机概论与硬件相关知识
理解基础的硬件知识,不一定很清楚很深入,但至少要有一定的概念认识,知道有哪些东西,分别起什么作用。
步骤二:先从Linux的安装与命令学起
没有Linux系统,怎么学习Linux呢?光是纸上谈兵是没有用的,实际操作才是王道。虽然说Linux distributions有很多,但是基本架构都是大同小异的。所以选一套自己喜欢的就行了,没有说哪一套就特别好。
步骤三:Linux操作系统基础技能
这些包含了用户/用户组的概念、权限的概念、程序的定义等,尤其是权限的概念,由于不同的权限设置会妨碍你的用户的便利行,但是太过于便利又会导致入侵的可能。所以这里需要了解我们的系统。
步骤四:务必学会vi文本编辑器
Linux的文本编辑器很多,vi强烈建议要先学习。
步骤五:Shell与Shell脚本的学习
其实一直在说的“命令行模式”说穿了就是一个名为shell的软件。既然要玩命令行界面,当然就是要会使用shell的意思。shell上面的内容非常多,包括正则表达式、管道命令和数据流重定向等,都需要了解。此外,为了在将来能够更好地管理服务器,shell脚本也是挺重要的。
步骤六:一定要会软件管理员(这是啥吖?)
因为玩Linux经常会遇到需要自己安装驱动程序或者是安装额外软件的时候,尤其是嵌入式设备或者是学术研究单位等。这个时候Tarball/RPM/DPKG等软件管理员的安装方式对我们来说就非常重要。
步骤七:网络基础
计算机网络以及TCP/IP协议栈的一些东西,为了以后架站做准备。
第二节:发生问题该怎么处理
哪怕是超级大牛也会有遇到问题不知道怎么处理的时候,关键是我们应该如何解决问题呢?首先,我们可以查询How-To或FAQ(帮助),以及利用搜索引擎搜索相关信息。然后,我们应该注意错误信息提示,根绝提示找到问题所在并且解决之。最后,如果前面的办法都不管用,就整理一下自己的问题(一定要整理),在社区或讨论区提问题。
下面还有几个书中引用Netman的建议:
1.遇到问题,不要动不动就直接关机或重启。
2.有系统地设计文件目录,不要随便到处保存文件以至于以后不知道放在哪里或者找到文件也不知道是啥。
3.养成一个做记录的习惯。尤其是发现问题的时候,把错误信息和引发状况以及解决方法记录清楚,同时最后归类以及定期整理。相信几年后的我们,会非常庆幸自己会有这么一个习惯。
————————————————————————第二十四天——————————————————————————
今天Jeremy表现太强劲了!
1.无论做什么事情,两个重要的因素造成我们学习的原动力:成就感和兴趣。
2.兴趣,就是发现学习内容的有趣的地方,探索里面的巧妙,感受其中的艺术,就像play basketball一样play java 、play linux。成就感,就是做出东西,在工作中更好地完成任务,在BBS或博客上分享自己的学习经验和心得以帮助别人。
3.做IT这一行,累是必然的,如果达不到一定的劳动(脑力)强度,也学不了多少东西。然而是不是心苦(别惊讶,我没写错字),那就要看你是否感兴趣,是否有成就感了,倘若心苦,建议还是慎入。