1、计算的主要组成部件与功能
1946年ENIAC计算机研发完成,标志着电子计算机时代的正式到来。从第一代的电子管计算机(1945-1956),第二代的晶体管计算机(1956-1953),第三代的集成电路计算机(1964-1971),直到当今的大规模集成电路计算机,计算机的硬件组成结构都遵循冯诺依曼体系。
在冯诺依曼体系结构中,计算机的硬件设备分为:输入设备、存储器、运算器、控制器和输出设备等五个基本组成部件。
现代计算机的硬件架构中:
CPU(Central Process Unit) 中心处理器,包含了五个基本组成部件中的两个基本部件:运算器和控制器。
运算器:完成算术运算和逻辑运算等各种运算
控制器:控制总线使用权限;完成寻址,控制对内存的读访问和写访问
除此之外CPU中还有各类寄存器和缓存,是为提升CPU的运算性能而设计的,并非计算机架构中的核心组成部件。
存储器:通常所将的内存(RAM Random Access Memory 随机访问存储器)作为计算机体系中的存储器
CPU和内存,组成了计算机架构中的最核心部件,整个计算机架构围绕运算器、控制和存储器,即可完成程序运行的所有操作。除此之外,还有两个部件,用来使计算机按用户需求完成计算:输入设备(Input)和输出设备(Output)。
输入设备:用户对计算机输入操作指令,提供各类数据等(典型设备如键盘、鼠标、硬盘等)
输出设备:用于输出数据加工的结果(典型设备如显示器、打印机等)
2、Linux的发型版
GNU组织规定任何符合GNU规范的软件需要提供源代码方式提供给用户使用,但对源代码的编译过程专业性较强,编译过程非常复杂,普通用户难以进行。为了能够让终端用户使用Linux操作系统,众多商业公司和社区组织对操作系统及各类工具进行编译打包,形成Linux的不同发行版。
目前,Linux发行版有数百种,任何商业公司和社区组织在遵循GNU组织的要求下,都可以按照自己的理解对Linux操作系统进行编译并打包,加入自己发行版特色的软件工具。
比如1994年,在美国北卡罗来纳州成立的RedHat公司,对Linux进行编译,并提供Linux系统的安装程序等,便于终端用户安装使用。
目前最主流的Linux发行版的三大分支是:
Debian:
基于Debian分支比较著名的二次发行版有ubuntu和knopix
Slackware:
基于Slackware分支比较著名的二次发型版有S.U.S.E,S.U.S.E又衍生出了OpenSUSE
RedHat:
RedHat的企业版为(RedHat Enterprise Linux RHEL)基于此发型版衍生出的发型版为CentOS(Community Enterprise OS 社区企业版)
Linux的不同发行版间,使用相同的Linux内核,但使用不同的程序包管理工具进行程序管理,如Debian系列的发行版使用apt-get作为包管理工具,程序包格式为deb,Slackware系列的发行版使用zypper包管理工具,程序包格式为rpm,而RedHat系列发行版使用yum作为包管理工具,程序包格式为rpm。各发行版之间既有区别又有联系,在GNU组织的GPL协议下各发行版取长补短共同发展。
3、Linux的哲学思想
1、一切皆文件:Linux把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等
2、由众多功能单一的小程序组成:单个小程序的性能和质量可以不断提升,成为高效的唯一程序,其他程序可以直接使用“轮子”,而不需要每个程序都来造轮子
3、通过组合多个小程序,完成复杂任务:组合多个高效的小程序,复杂任务的处理必然也是高效的
4、程序启动后,尽量避免用户交互:这种方式易于以编程的方式实现自动化任务
5、使用文本文件保存配置信息:这种设计便于用户对程序配置做出调整
4、常用命令的使用格式
在Linux的CLI(Command Line Interface) 模式下,可以使用Linux命令实现对Linux系统的管理,Linux命令提示符各符合含义如下:
[root@node1 ~]# COMMAND
root:当前登录用户
node1:当前主机的主机名,非完整格式
完整格式为:node1.magedu.com(加上了域名)
~ :用户当前所在目录(current directory),也称为工作目录(working directory),相对路径
# :管理员账号 root:拥有最高权限,能执行所有操作
$ :普通用户,非root,不具有管理权限,不能执行系统管理类操作
使用命令的基本格式如下:
COMMAND OPTIONS ARGUMENTS
COMMAND:命令名称
OPTIONS:选项(调整命令的运行特性);选项有短选项和长选项的区别,如果同一命令同时使用多个短选项,多数情况下可合并表示,长选项不能合并;有些选项可以带参数,此称为选项参数,而不是命令参数;短选项的参数用空格来分隔,长选项的参数用 “=” 来设置。
ARGUMENTS:参数 (命令的作用对象:命令对什么生效),不同命令的参数格式不同;有些命令可同时带多个参数,多个参数之间以空格分隔。
ifconfig命令:查看活动接口的ip地址
echo命令:回显命令
tty命令:查看当前终端设备
startx命令:启动X-window桌面环境
export命令:用于将shell变量输出为环境变量,或者将shell函数输出为环境变量
pwd命令:(printing working directory) 显示工作目录
history命令:查看命令历史命令
shutdown命令:关机命令
poweroff命令:关机命令
reboot命令:重启机器命令
hwclock命令:与clock相同,查看硬件时钟
date命令:查看系统时钟
5、获取帮助的方式及man的章节划分
按照在文件系统上是否存在一个与命令相对应的程序文件这一标准进行判断,命令分为内建命令和外部命令。所有外部文件,在文件系统的目录中都有一个与命令名相同的独立的程序文件。用户选用的Shell环境本身也是一个外部命令,但Shell命令中内建了众多保证系统运行的基本命令,这部分命令称为内建命令,不同Shell环境中的内建命令可能存在不通用的情况。
使用 type命令可以用来区分内建命令和外部命令。
type COMMAND
内部命令:builtin
外部命令:显示为命令文件所在路径
Linux的内建命令和外部命令获取帮助的方法不同。
针对Linux的内建命令:help COMMAND
针对Linux的外部命令获取帮助的方法较多:
1、查看命令自带的简要格式使用帮助: COMMAND --help
2、使用手册(manual)查看命令详情:man COMMAND
3、获取命令的在线文档 :info COMMAND
4、查看命令自带的说明文档,包括README、CHANGELOG、INSTALL
5、Linux主流发行版的官方网站上的帮助文档
6、程序命令官方网站上的帮助文档
7、通过搜索引擎获得命令的使用说明
8、通过各种技术书籍获取命令使用说明
以上获取命令帮助的方式中,通过man命令查看程序帮助的方式最为方便和全面,用户可用随时通过 man COMMAND 命令查询命令帮助。
man命令通过不同章节对命令进行分类:
man1:用户可用命令(User Commands)
man2:使用函数库中程序可用的系统调用
man3:程序中可用的C库调用
man4:设备文件及特殊文件
man5:文件格式(配置文件格式)
man6:游戏使用帮助
man7:杂项
man8:管理工具及守护进程
部分命令会同时在多个章节中出现。使用whatis命令可用查看到命令在man命令的哪些章节的中存在帮助信息。
6、Linux目录命名法则及功用规定
Linux目录命名规则:
1、Linux的目录是路径映射文件(遵循一切皆文件思想,目录本身也是文件)
2、Linux的目录名中不能带有“/”符号
3、Linux的目录名大小写敏感
4、以“."开头的目录名将成为隐藏文件
5、使用特殊字符作为目录名合法,但极其不建议使用
6、Linux的目录名不能超过255个字符
为了避免Linux众多发行版各自为政,避免不同发型版的文件体系出现较大区别,Linux标准化组织制定了FHS(Filesystem Hierarchy Standard)标准,规定了Linux发行版的标准目录体系结构。
FHS标准对 "/" 目录下的文件设置给出了明确的规范。下面对 “/" 目录下的一层文件目录的主要作用进行说明:
/bin:所有用户可用的基本命令程序文件(二进制文件)
/sbin:供系统管理使用的命令乘车文件(系统管理的二进制文件)
/boot:引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等
/dev :存储特殊文件或设备文件
设备文件有两种类型:字符设备(键盘是典型的线性设备,有时序性)、块设备(硬盘是典型的块设备,文件存储为不同的block,是随机的,可以访问任何一个项目,比如内存 Random Access Memory)
/etc :系统程序的配置文件 ,只能为静态文件(文本文件)。主机特有的系统配置文件
/home:普通的家目录的集中位置,一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME
/lib :为系统启动或根文件系统上的应用程序(/bin和/sbin等)提供共享库文件,以及为内核提供内核模块。
libc.so.* :动态链接C库
ld* 运行时链接器或加载器
modules 用于存储内核模块的目录
/lib64 :64位系统特有的存放64位共享库的路径;为了能够实现系统的向下兼容,64位系统下必然会有 “/lib” 目录,但32位系统下不一定有"/lib64" 目录,此目录为可选目录。
/media : 为便携设备提供挂载点,cdrom,floppy等
/mnt : 其他文件系统的临时挂载点
/opt : 附件应用程序(第三方应用程序)的安装位置,可选路径
/srv : 当前主机为服务提供的数据
/tmp : 为那些会产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户执行写入操作,所有用户都能
/usr : user hierarchy 全局共享只读数据路径,本身就是一个层级结构,其下有bin、sbin、lib、lib64、include(C程序头文件)、share(命令手册页和自带文档等架构特有的文件的存储位置)、local(另一个层级目录)、X11R6(Xwindow程序的安装位置)、src(程序源码文件的存储位置)
/usr/local : Local Hierarchy,让系统管理员安装本地应用程序,也通常用于安装第三方程序。
/var : var heirarchy,存储经常发生变化的数据的目录
/proc :基于内存的虚拟文件系统(临时的,关机后将消失),用于为内核及进程存储其相关信息,他们多为内核参数。例如,net、ipv4、ip_forward、虚拟为 net/ipv4/ip_forward,存储于 /proc/sys/ , 因此其完整的路径为:/proc/sys/net/ipv4/ip_forward
/sys : sysfs 虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的途径,其主要作用在于为管理Linux设备提供一种统一模型的接口