第一部分:计算机组成及功能
电子真空管的出现促使了计算机的诞生;
根据冯●诺依曼的哲学思想,计算机的组成分为五大部分。分别为:
1. 运算器
2. 控制器
3. 存储器
4. 输入设备
5. 输出设备
其中:运算器和控制器是构成CPU的核心组件;
CPU的组成部分除了核心组件外还包括:寄存器和缓存
1.运算器: 执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作;
2.控制器要保证能按程序中设定的指令运行次序,自动地连续执行指令序列;
3.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址,即是把内存的数据提取到寄存器中暂时保存的。
4.缓存是加速的,CPU缓存:是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。
存储器:存储数据的,分为RAM和ROM
程序:指令+程序
程序:算法+数据结构
只有CPU的计算机是毫无意义的,CPU能驱动很多程序和事务,帮助用户解决问题才是本质,那么我们就需要数据。
数据可以表示为文本、指令集等等,他们都是被放在存储器也就是硬盘上的,那么我们怎么存储这些个数据呢?
实际上计算机是由电驱动的,利用开、关状态来表示0和1数字,所以计算机只能识别二进制数字。存储设备作为计算机的一个组成部分也是遵循这个原理;
因为计算机是由外国人发明的,所以为了能让0和1自由组合成对应的字母和符号,美国国家标准学会(American National Standard Institute , ANSI )制定了ASCII码,他们是由8位二进制数来表示的可能的所有字符,也就是2的8次方。ASCII的出现使机器语言与人类语言搭起了桥梁。
存储器上的任何一个数据,他们采用8位二进制格式存储。
例如:abcd,四个字母组成的格式他们在机器中就会表示成:“01100001 01100010 01100011 01100100”
注意:汉字不在ASCII中,它是由英文-汉子对照表转译过来的。
因为制作cpu的厂商不同,想要驱动他们需要把操作系统通过编译器编译成计算机能理解的二进制格式。
操作系统也就是kernel是很简陋的,为了达到人机交互的功能外层还需要包装一层shell,如果还要运行应用程序,我们还需要API接口来实现应用程序和操作系统直接的各种调用,以达到计算机的完整运行。
Kernel的功能:
1. 驱动程序;
2. 进程管理;
3. 安全防护;
4. 网络功能;
5. 内存管理;
6. 文件系统;
第二部分:linux的发行版
就Linux的本质来说,它只是操作系统的核心,负责控制硬件、管理文件系统、进程等,并不给用户提供各种工具和应用软件。操作系统核心,若没有强大的应用软件可以使用,如C/C++编译器、C/C++库、系统管理工具、网络工具、办公软件、多媒体软件、绘图软件等,也无法发挥它强大的功能,用户也无法仅仅使用这个系统核心进行工作,因此人们以Linux核心为中心,再集成搭配各种各样的系统管理软件或应用工具软件组成一套完整的操作系统,如此的组合便称为Linux发行版。
linux的分支很多,这里详细介绍三个主流版本:
1.Debian是一款非常稳定的服务器操作系统,它没有太多的花哨,稳定压倒一切,对于服务器系统来说是最大的优势所在,debian这个linux系统,底层非常稳定,内核和内存的占用都非常小。
其中:Ubuntu 和 Knopix 是基于debian的二次发行版!
2.Slackware Linux是一款配置灵活和透明的服务器操作系统,且他的很多特性体现出了KISS原则,最为有名的一些例子就是不依赖图形界面的文本化系统配置、传统的服务管理方式和不解决依赖的包管理方式。它的最大特点就是安装灵活,目录结构严谨,版本力求稳定而非追新。
其中:SUSE 是基于debian的二次发行版,OPENSUSE是开源组织为了让suse开源化利用社区的形式把SUSE提供的源代码编译出来并公开免费下载使用。
3.redhat是一款企业级的服务器操作系统,它的开放源码模式提供跨物理、虚拟和云端环境的企业运算解决方案,以帮助企业降低成本并提升效能、稳定性与安全性。红帽公司同时也为全球客户或通过领先合作伙伴为客户提供技术支持、培训和咨询服务。
其中:RHEL 主要面对企业,利用自身专业性为企业提供维保服务以至于保证应用服务器系统的稳定运行;CentOS是RHEL的山寨版,可以免费让大家使用,但是不负责运行稳定和宕机问题。
第三部分:linux的哲学思想
Linux的哲学思想:
1.由目的单一的一个个的小程序组成;组合小程序完成复杂任务;
2.一切皆文件,包括硬件设备和通信的配置信息;
3.尽量避免捕获用户接口;
4.配置文件保存为纯文本格式;
第四部分:linux命令使用格式
命令语法格式:
COMMAND OPTIONS ARGUMENTS,其中:
COMMAND:发起一条命令并请求内核将某个二进制程序运行为一个进程;
OPTIONS :选项参数。指定命令的运行特性和实现的功能;用于调整命令的运行特性;决定运行命令的哪一段代码。选项有两种表现形式:短和长。
ARGUMENTS:命令参数,命令的作用对象,命令对什么生效。
注意:不同的命令参数,有些命令可以同时带多个参数,多个之间以空格分隔。
获取使用帮助:
1.二进制、库文件:可执行文件,其中库文件不能独立执行,只能被调用时执行;
输入一个命令:就是请求内核将某个二进制程序运行为一个进程;程序 –>进程(有生命周期)
命令本身是一个可执行的程序文件:是一个二进制格式的文件,可能会调用共享库
2.多数程序文件都存放在:/bin /sbin /usr/bin /usr/sbin /usr/local/bin
普通命令:/bin /usr/bin /usr/local/bin
管理命令:/sbin /usr/sbin /usr/local/sbin
共享库:/lib /lib64 /user/lib /usr/local/lib
命令必须遵循特定的格式规范:ELF 格式
eg:
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
3.命令分为两类:
由shell程序自带的命令,内置命令;
独立的可执行程序文件,文件名即命令名,外部命令;
4.shell程序是独特的程序,负责解析用户提供的命令
环境变量:
PATH:从那些路径中查找用户键入的命令字符串所对应的命令文件;
eg:
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
其中,shell自带的命令是在后台运行的,没有目录可以找。
5.查看命令类型:
eg:
[root@localhost ~]# type ls
ls is aliased to `ls –color=tty'
[root@localhost ~]# type type
type is a shell builtin
6.获取命令的使用帮助:
内部命令:
help commond
外部命令:
(1)命令自带简要格式的使用帮助
command –help
(2)使用手册:manual
位置:/usr/share/man
7.man命令及格式
格式:man 命令
“/+关键字” 用于搜索;
“man -k 关键字” 搜索包含关键字的帮助文档;
绝大多数程序都有相应的帮助文档,并保存在/usr/share/doc文件夹中 Man 文档的章节划分: 手册分为man1-man8
其中:
man1:用户命令;
man2:系统调用;
man3:C库调用;
man4:设备文件及特殊文件;
man5:文件格式:
man6:游戏使用帮助;
man7:杂项;
man8:管理工具及守护进行。
帮助手册路径:/usr/share/man
语法格式:#man COMMAND
注:1、并非每个COMMAND在所有章节下都有手册;
2、可以通过whatis查看命令存在哪些章节;
3、whatis执行过程是查询数据进行的;
第五部分:基础命令
1.cd命令:
cd ~USERNAME:切换回指定用户的家目录
eg:
[root@localhost /]# cd ~hive
[root@localhost hive]# pwd
/home/hive
cd -:在上一次所在目录与当前目录之间来回切换;
2.pwd命令
相关的环境变量
pwd:当前工作目录;
oldpwd:上一次的工作目录
3.ls命令
-h:把文件大小换算成标准格式
-d:查看目录自身而非其内部的文件列表;
-r:逆序排列;
-R:递归显示。
4.cat命令(tac是cat的逆序显示文本信息)
如何知道那个文件是文本文件?
[root@localhost ~]# file /etc/fstab
/etc/fstab: ASCII text
答:使用 file 命令,ascii文本是一种半结构化数据
参数
-n:对查看的文件内容行进行编号。
-E:显示行结束符
5.file命令
查看文件类型
6.echo命令
回显命令
-n:不进行换行
-e:让转义符生效
对目标使用:单引号,变量引用不执行替换;
双引用,变量引用会被替换;
7.shutdown、reboot和poweroff命令
-r:后面跟着数字,指定关机时间
-c:取消关机命令
8.时间命令
linux系统启动时从硬件读取日期和时间信息;读取完成后就不再与硬件相关联;
date:设置系统日期和时间(系统时钟)
显示日期时间:date [OPTION]… [+FORMAT]
FORMAT:格式符 %F full date; same as %Y-%m-%d
eg:
[root@localhost ~]# date +%F
2016-11-17
[root@localhost ~]# date +%T
09:54:40
[root@localhost ~]# date +%F-%T (这个被叫做格式字符串)
2016-11-17-09:55:41
[root@localhost ~]# date +"%F %T"
2016-11-17 09:56:23
设置日期时间:date [MMDDhhmm[[CC]YY][.ss]]
设定日期时间格式:date 月-日-小时-分钟-年-.-秒
clock,hwclock:查询或者设定硬件时钟(硬件时钟)
-s:把系统时间同步成硬件
-w:把硬件时间同步成系统
9.cal命令:日历
10.tty:打印连接到标准输入的终端的文件名。
命令项:
-s: 什么也不打印,只是返回退出状态码。
–help: 打印帮助信息。
–version: 打印版本信息并退出。
11.startx:
客户端及选项:X客户端及选项;
服务器及选项:X服务器及选项。
12.export:查看当前shell中的环境变量
补全路径:export
eg:
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# export PATH=$PATH:user/local/apache/bin
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:user/local/apache/bin
13.history:命令历史
其中:.bash_history 是保存的用户关机后从内存写入到硬盘中的所有命令!history是读取的当前内存中的命令!
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史的文件;
HISTFILESIZE:命令历史文件的大小;
eg:
[root@localhost ~]# echo $HISTSIZE
1000
[root@localhost ~]# echo $HISTFILESIZE
1000
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
-c:清空;
-d :删除指定条数;用法:第几条 条数
-w:把内存中的追加到文件中;
-r:文件到内存;
第六部分:Linux发行版的基础目录名称的命名法则及功用规定
文件系统:层级结构
内核中存放的根文件系统,操作系统启动后就会处在一个目录下。
linux有一个标准委员会,无论什么发行版都要执行这个标准来命名。这个机制就叫做FHS:文件系统层级结构标准
/bin:供所有用户使用的基本二进制命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件;kernel、initramfs、grub等;
/dev:存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备,有时序的)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;
/lib:为系统启动或根二那件系统上的应用程序(/bin、/sbin等)提供共享库,以及为内核提供内核模块
-文件.so:动态链接的C库;
-ld*:运行时链接器/加载器;
-modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点,cdrom,floppy等;
/mnt:其他文件系统的临时挂载点;
/opt:附加程序的安装位置;第三方安装位置;
/root:管理员的家目录(管理员不需要登陆系统)
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户执行写入操作,有特殊权限;
/usr:全局共享的只读数据路径;
-include:C程序头文件
-share:命令手册页,命令自带文档等架构特有的文件存储位置。
-X11R6:x-window程序的安装位置;
src:程序源码文件的存储位置;
/usr/local:让系统管理员安装本地应用程序:
/var:存储经常发生变化的数据目录
/proc:内核和进程存储其相关信息;他们多为内核参数;它是一个基于内存的虚拟文件系统;
/sys:sysfs虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的路径;其主要作用在为管理linux设备提供一种统一模型的接口;
原创文章,作者:N25-笔头,如若转载,请注明出处:http://www.178linux.com/62599
评论列表(1条)
总结的很好,下次要加一例子说明就更棒了