本次博文是Linux运维实战的开山篇,主要内容如下:
-
计算机的组成及其功能;
-
Linux的不同发行版之间的联系与区别;
-
Linux的哲学思想;
-
Linux系统上命令的适用格式及一些常用命令的使用;
-
Linux系统上如何获得帮助信息;
-
Linux发行版的基础目录名称命名法则及功用规定;
一、计算机的组成及其功能:
问题引入:互联网时代,计算机是我们每天都要使用的工具,那么,一台计算机是由哪几部分组成的呢?其各部分的功能又是怎样的呢?下面我们就来详细讨论一下哈。
计算机的组成:
-
什么是计算机:
大到超级计算机,小到智能手机,这些统统都可以称为计算机,那计算机的定义究竟是什么呢?我觉得需要从程序员和普通用户两个角度去理解。从程序员角度看的定义为:程序员要写出能在机器上正确运行的程序必须了解的概念性结构和功能特性。从用户角度看的定义为:硬件+软件。通常是一台安装好了操作系统的虚拟计算机,用户可以在其上完成一些日常工作、玩游戏等等。
-
一台计算机由哪几部分组成:
我们现在常用的计算机,包括手机及智能设备,通常由五大部件组成(冯若依曼提出),如下图所示:
由上图可以看出,一台计算机的组成:
CPU:包括运算器和控制器
存储器:包括ROM和RAM,通常我们所说的内存主要为RAM
I/O设备:即输入输出设备,通常为磁盘、键盘、鼠标、显示器、打印机等
-
计算机各组成部分的功能:
问题引入:计算机能够提供哪些功能呢?我想最主要的功能就是按照程序员实现编制好的程序运行,处理数据以满足我们日常的生活和工作需要。
那么我们就需要思考一个问题:什么是程序?程序是如何被运行的呢?
程序的执行过程:
-
用户打开程序:
程序=指令+数据。此时,数据先存在硬盘里,CPU要处理该数据就要先发指令将数据从硬盘读取到到内存里; -
CPU把程序代码段和数据段送入计算机的内存
-
控制器从存储器中取指令
-
控制器分析,执行指令,为取下一条指令做准备
-
取下一条指令,分析执行,如此重复操作,直至执行完程序中全部指令,便可获得全部指令
现代计算机所遵循的是冯·若依曼机制:
-
程序存储
-
采用2进制
二、Linux的不同发行版之间的联系与区别:
-
开源组织、开源协定与Linux的关系:
说明:
-
GNU:“GNU's Not Unix”的递归缩写。是由Richard Stallman发起的开源运动(有点类似操作系统届的共产主义哈)
-
GPL:GPL是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件(Free software),后来改名为开放源代码软件(Open Source Software)。大多数的GNU程序和超过半数的自由软件使用它 。
-
GPL保证了任何人都有权复制、修改和重新发布自由软件的源代码,并且规定在不增加费用的条件下得到源代码(基本发行费用除外),但你不能声明你做了原始的工作,或声明是由他人做的。
-
Linux kernel + GNU utilities = open source,UNIX-like operating system
-
发行商的由来:
问题引入:我们现在拿到了Linux内核(源程序),如何安装到X86主机上?众多以源码提供的应用程序如何安装到Linux系统中呢?
发行商应运而生:仅有内核而没有应用软件的操作系统是无法使用的,所以许多公司或社团将内核、源代码及相关的应用程序组织构成一个完整的操作系统,并且提供一个安装程序(RedHat提供的安装程序叫anaconda),一般的用户可以简便地安装和使用Linux,这就是所谓的发行版本(distribution)。
-
Linux的发行版本:
Linux的发行版有很多,先简单罗列一下:
这些主流的发行版的关系如下图所示:
注意:Linux的内核版本和发行商的发行版本是两码事
例如:RHEL-6.4 用的是Linux-2.6.32版本的内核
Linux比较有名的内核版本:2.2,2.4,2.6 ,3.10等
三、Linux的哲学思想:
-
一切皆文件:对于Linux而言一切都是以文件的形式存在,包括硬件设备,甚至通信接口等;
例如在Linux系统中,硬件文件都是保存在/dev/目录下,我们以光驱CDROM为例:
-
由众多功能单一的程序组成:一个程序只做一件事情,并且做好;
-
组合小程序完成复杂任务:一个复杂的任务不必使用一个大型的程序来独立完成,它可以由多个独立的小程序相互配合以完成复杂任务;
-
尽量避免与用户交互:目标–易于以编程的方式实现自动化任务;
-
使用文本文件保存配置信息:计算机的所有硬件和软件配置信息保存在文本文件中;
-
提供机制,而非策略:机制是一种框架;策略就是填充框架的一个个实体(陈莉君教授提出的理论);机制是接口,策略是数据流。管道是机制,应用管道处理各种数据是策略。
四、Linux系统上命令的使用格式及一些常用命令的使用:
-
Linux中命令的使用格式:
Linux中的命令分为内部命令和外部命令两种:
内部命令:是shell程序自身附带的命令 ,随每次启动的SHELL装入并常驻内存;(类似DOS系统的内部命令,是随每次启动的COMMAND.COM装入并常驻内存)
外部命令:在某目录有一个与命令同名的可执行文件
如何查看一个命令是内部命令还是外部命令呢?使用type命令:
上面的例子中,mkdir是一个外部命令,位于/bin/mkdir/目录中;cd是一个内部命令
小结:
Linux 的命令格式: [username@host 工作目录] PROMPT COMMAND OPTIONS ARGUMRNTS
PROMPT:命令提示符,一般而言,管理员的提示符为#,这个我们在Cisco的路由设备上也见到过哈,#代表特权;普通用户的命令提示符为$
例如:用whoami命令可以查看当前用户是谁
下面我们切换到一个普通用户:
可以看到普通用户的命令提示符为$。从管理员切换到普通用户是不需要密码的,反之从普通用户切换回管理员需要密码。
COMMAND:输入的命令,如ls、mkdir、mv等等,Linux中最常用的命令大约有60多个
OPTIONS:定制命令的运行特性
选项有两种表现形式:
短选项: -c
长选项:–word 例如 –help –human-readable
例如:ls命令带选项和不带选项的显示效果如下图:
ARGUMENTS :命令的作用对象,命令对什么生效
例如上面的例子中,ls命令作用的对象是/tmp目录,意思是要列出/tmp目录下的内容。ARGUMENTS有时候是可以省略的,例如:
ls命令后省略ARGUMENTS,表示显示当前目录下的内容。
-
常用命令的使用:ifconfig、
ifconfig:是一个用来查看、配置、启用或禁用网络接口的工具
常用的选项:
-a 显示当前使用所有接口 ifconfig -a
-s 显示网卡信息列表 ifconfig -s
范例:
当前我的主机上,网卡的地址为192.168.1.58/24
echo : 将参数写入标准输出,标准输出一般为显示器
常用的选项: -n 不换行 -e 处理转义字符
例如:
tty :查看终端设备
常用的选项: --version 查看tty版本信息例如:
startx:在某一个虚拟终端启动gui
例如:
我的主机上没有安装GUI程序,所以报错。
export :设置或显示环境变量
例如:将当前shell的语言设置为英文
pwd:显示当前的工作目录
例如:
history :查看此前的命令
常用选项:
-c :清空历史 -d offset: 指定位置删除历史条目 -r: 从文件读取命令历史至历史列表中 -w:把历史列表中的命令追加到文件中 #:显示最近的N条命令 history
例如:
shutdown :关机或重启命令
常用选项 -h:关机后关闭电源 -c: 取消目前正在执行的关机程序 -r :重启计算机 shutdown -r例如:
poweroff:关机命令
常用选项: -f:强制关机 reboot:重启命令 hwlock : 查看或设定硬件时间 -s --hctosys:以硬件时间为准,把系统调整与硬件时间相同 -w –systohc:以系统时间为准,把硬件时间调整为与系统时间相同 例如:以系统时间为准,把硬件时间调整为与系统时间相同
data:查看或修改系统时钟
设定日期时间: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]例如:
五、Linux系统上如何获得帮助信息:
查看命令类型: type COMMAND
例如:
获取命令的使用帮助: 内部命令 :help COMMAND 外部命令 :COMMAND -h 或 COMMAND --help
例如:
cd是内部命令,它的帮助获取方式如下图所示:
hwclock是外部命令,它的帮助获取方式如下图所示:
Linux中的帮助文档:
有个形象的话是这样说的:生活中有困难找政府,Linux中有困难找男人(man)。Linux中的man非彼man,是manual的缩写,用法如下:
使用说明:
-
按章节划分:
1:用户命令
2:系统调用
3:c库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏使用帮助
7:杂项
8:管理工具及守护进程
-
选项说明:
SECTION:指定章节 NAME: 功能性说明 SYNOPSIS 语法格式 DESCRIPTION 描述 OPTIONS 选项 EXAMPLES 使用实例 AUTHOR 作者 BUGS 报告程序bug方式
例如:
查看init的帮助手册,init是一个守护进程,所以默认打开了第8章节:
查看ls命令的帮助手册,ls是一个内部命令,所以默认会打开第1章节:
-
系统到哪里去找某个程序的帮助手册呢?
在其配置文件中定义:/etc/man.config
六、Linux发行版的基础目录名称命名法则及功用规定:
-
Linux系统中的文件类型:
Linux系统中,文件被分为3类:
(1)目录文件:全部由目录组成的文件
(2)普通文件:由系统文件、用户文件、实用程序文件、库文件组成
(3)特别文件:所有的输入/输出设备被看作特别文件,系统指定专用的文件名,如:/dev/lp表示打印机设备。
Linux系统树型目录组织结构:
Linux系统把目录组织成树状结构–Linux Filesystem Hierarchy。这样做有什么好处呢?
层次化结构能够大大减小查找的复杂度–>如果系统内文件很多,则目录文件会变得很长,要查找某个文件将耗费太多的时间(例如:我们要查找一个文件,但不知道它存储在什么地方,此时我们就需要从“/”下开始查找,那肯定是非常耗时间哈。若此时我们知道这个文件保存在"/var/log/” 下,那查找起来肯定快的多哈!)。树是一种层次化的数据结构,它由根结点,子结点以及子子结点组成。Linux借用树状结构来组织它的文件目录,形成树型目录组织。树型目录组织是多级目录组织的一种形式。Linux文件系统的目录组织结构如下图所示:
说明:特殊目录
include: c程序头文件
share:命令手册页 命令自带文档 通常放于此目录下,
local:另一个层级目录
x11r6:x-window 程序的安装位置
src: 程序源码文件的存储位置
lib.so.*: 动态链接C库
ld*: 运行时连接器/加载器
modules: 用于存储内核模块目录
设备两种类型:字符设备(线性设备) 块设备(随机设备)
本次博文就这么多哈,欢迎各位童鞋拍砖。有任何问题请和我联系:QQ:229293602
原创文章,作者:N4_jjx,如若转载,请注明出处:http://www.178linux.com/56436
评论列表(1条)
内容格式把握得很好,不错,希望你能熟知基础命令知识,加油!