一、计算机组成及功能 1、计算机的组成 计算机组成指的是系统结构的逻辑实现,包括机器机内的数据流和控制流的 组成及逻辑设计等。 主要分为五个部分:控制器,运算器,存储器,输入设备,输出设备。 2、各组成部分的功能 (1)运算器:运算器的主要功能是对数据进行各种运算。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。 (2)控制器:由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。 (3)存储器:存储器分为内存和外存。内存是电脑的记忆部件,用于存放电脑运行中的原始数据、中间结果以及指示电脑工作的程序。内存可以分为随机访问存储器和只 读存储器,前者允许数据的读取与写入,磁盘中的程序必须被调入内存后才能运行,中央处理器可直接访问内存,与内存交换数据。 (4)输入设备:输入设备是向计算机输入数据和信息的设备。 (5)输出设备:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。 二、Linux的发行版本与各版本间的联系和区别 Linux发行版主要有三个分支:Debian、Slackware、Redhat,如图: 1、Debian系列 (1)Debian系列包括Mint和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去:) 1> Ubuntu:基于Debian开发的开源Linux操作系统,主要针对桌面和服务器;严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。 2> Linux Mint:基于Debian和Ubuntu的Linux发行版,致力于桌面系统对个人用户每天的工作更易用,更高效,且目标是提供一种更完整的即刻可用体验。 2、Slackware系列 是由Patrick Volkerding开发的GNU/Linux发行版。与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则,就是说没有任何配置系统的图形界面工具。一开始,配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和灵活性。 Slackware Linux的另一个突出的特性也符合KISS原则:Slackware没有如RPM之类的成熟的软件包管理器。Slackware的软件包都是通常的tgz(tar/gzip)格式文件再加上安装脚本。Tgz对于有经验的用户来说,比RPM更为强大,并避免了RPM之类管理器的依赖性问题。Slackware与其他的发行版本(Red Hat、Debian、Gentoo、SuSE、 Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版本。只吸收稳定版本的应用程序,并且缺少其他linux版本中那些为发行版本定制的配置工具。 1> suse:基于Slackware二次开发的一款Linux,主要用于商业桌面、服务器。 2> SLES(SUSE Linux Enterprise Server(SLES):企业服务器操作系统,是唯一与微软系统兼容的Linux操作系统。 3> OpenSUSE:由suse发展而来,旨在推进linux的广泛使用,主要用于桌面环境,用户界面非常华丽,而且性能良好。 3、RedHat系列 Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

1> rhel(red hat enterprise Linux):Red Hat公司发布的面向企业用户的Linux操作系统。早起版本主要用于桌面环境,免费:

2> Fedora:基于Red Hat Linux终止发行后,红帽公司计划以Fedora来取代Red Hat Linux在个人领域的应用,而另外发行的Red Hat Enterprise Linux取代Red Hat Linux在商业应用的领域。Fedora的功能对于用户而言,它是一套功能完备、更新快速的免费操作系统,而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。Fedora大约每六个月发布新版本。

3> Centos:基于Red hat Linux提供的可自由使用源代码的企业级Linux发行版本。每个版本的Centos都会获得十年的支持(通过安全更新的方式)。新版本的Centos大约每两年发行一次,而每个版本的Centos会定期(大概6个月)更新一次,以支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的Linux环境。

(4)其他发行版本: 1、 Gentoo:基于linux的自由操作系统,基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点, Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西--你想让它成为什么,它就可以成为什么。由于它近乎无限的适应性,可把Gentoo称作元发行版。 2、 Aech Linux(或称Arch):以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅和代码最小化的设计宗旨。

不通发行版之间的联系和区别: 联系:所有发行版都是使用Linux内核;都需要遵循GNU的GPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号.修正号)。 区别:发行版的本质区别,在于继承不同版本的内核,库、程序的组成。不同发行版几乎采用了不同包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系统,包文件以RPM为扩展名;Ubuntu系列,Debian系列使用基于DPKG包管理系统,包文件以deb为扩展名。)

三、Linux的哲学思想

1、一切皆文件:是Unix/Linux的重要哲学思想之一,不仅将文件、目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面,作用就是提高资源的管理效率。 2、由众多功能单一的小程序组成:一个程序只做一件事,并且能组合好完成复杂的任务,作用是分工明确,方便进程管理,好处是小程序易于理解,维护, 占用系统资源少。 3、避免令人困扰的图形界面:使用命令行接口执行效率更高,易于以编程的方式实现自动化任务。 4、配置数据存储在文本中:linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,易于阅读和编辑。 5、提供机制而非策略:从笼统意义上讲,所谓机制就是“提供什么功能”;策略就是“实现什么功能”。其实,机制就是将整个系统看作是一个资源的集合,当 任务来临时能够提供多少资源供其使用,却不介入任务的运行过程,任凭用户自己分配。

四、说明Linux命令的使用格式

1、ifconfig 1.命令格式: ifconfig [网络设备] [参数] 2.命令功能: ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。 3.命令参数: up 启动指定网络设备/网卡。 down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。 arp 设置指定网卡是否支持ARP协议。 -promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包 -allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包 -a 显示全部接口信息 -s 显示摘要信息(类似于 netstat -i) add 给指定网卡配置IP地址 del 删除指定网卡的IP地址 <硬件地址> 配置网卡最大的传输单元 mtu<字节数> 设置网卡的最大传输单元 (bytes) netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。 tunel 建立隧道 dstaddr 设定一个远端地址,建立点对点通信 -broadcast<地址> 为指定网卡设置广播协议 -pointtopoint<地址> 为网卡设置点对点通讯协议 multicast 为网卡设置组播标志 address 为网卡设置IPv4地址 txqueuelen<长度> 为网卡设置传输列队的长度 4.使用实例:
实例1:查看网络接口状态,不加任何参数,会输出当前网络接口的情况。 实例2:启动关闭指定网卡 ifconfig ens33 up ifconfig ens33 down

实例3:为网卡配置IP 说明: ifconfig eth0 192.168.60.129 给eth0网卡配置IP地:192.168.60.129 ifconfig eth0 192.168.60.129 netmask 255.255.255.0 给eth0网卡配置IP地址:192.168.60.192,并加上子掩码:255.255.255.0 ifconfig eth0 192.168.60.129 netmask 255.255.255.0 broadcast 192.168.60.255 /给eth0网卡配置IP地址:192.168.60.129,加上子掩码:255.255.255.0,加上个广播地址: 192.168.60.129 实例4:启用和关闭ARP协议 命令: ifconfig eth0 arp ifconfig eth0 -arp 输出: 实例5:设置最大传输单元 命令: ifconfig eth0 mtu 1480 输出: 说明: 设置能通过的最大数据包大小为 1480 bytes

2、echo echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。 语   法:echo [-ne][字符串]或 echo [--help][--version] 补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。 选项: -n 不要在最后自动换行 -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符; –help 显示帮助 –version 显示版本信息 实例1:显示系统定义的变量的值 [root@CentOS7 ~]# echo $USER root [root@CentOS7 ~]# echo $HOME /root 实例2:显示用户自定义的变量的值 [root@CentOS7 ~]# var1=date [root@CentOS7 ~]# echo "Today's date time is : $var1" Today's date time is : Sat Dec 15 17:43:24 CST 2018 实例3:在echo命令中使用反斜线 [root@CentOS7 ~]# echo -e "Ubuntu \bis \bthe \bbest \bDesktop \bOS" UbuntuisthebestDesktopOS 实例4:显示文本字符串 [root@CentOS7 ~]# echo " Hi this echo command testing" Hi this echo command testing 实例5:在echo命令中使用制表符空格和垂直制表符 [root@CentOS7 ~]# echo -e "Ubuntu \tis \tthe \tbest \tDesktop \tOS" Ubuntu is the best Desktop OS [root@CentOS7 ~]# echo -e "Ubuntu \vis \vthe \vbest \vDesktop \vOS" Ubuntu is the best Desktop OS 实例6:设置echo命令彩色输出 echo命令可以修改字体类型,字体背景色以及字体颜色,转义序列\033可以用于改变字体属性。要使转义序列生效,必须使用-e选项。下面列出了部分转义代码: [0m: 正常 [1m: 粗体 [4m: 字体加上下划线 [7m: 逆转前景和背景色 [8m: 不可见字符 [9m: 跨行字体 [30m: 灰色字体 [31m: 红色字体 [32m: 绿色字体 [33m: 棕色字体 [34m: 蓝色字体 [35m: 紫色字体 [36m: 浅蓝色字体 [37m: 浅灰字体 [38m: 黑色字体 [40m: 黑色背景 [41m: 红色背景 [42m: 绿色背景 [43m: 棕色背景 [44m: 蓝色背景 [45m: 紫色背景 [46m: 浅蓝色背景 [47m: 浅灰色背景 用紫色加粗字体打印输出My Linux。 [root@CentOS7 ~]# echo -e "\033[1m\033[35mMy Linux\033[0m" 用红色字体黑色背景色打印输出My Linux。 [root@CentOS7 ~]# echo -e "\033[31m\033[40mMy Linux\033[0m"

3、tty tty命令用于显示终端机连接标准输入设备的文件名称。 在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。 语法 tty [-s][--help][--version] 参数说明: -s或--silent或--quiet 不显示任何信息,只回传状态代码。 --help 在线帮助。 --version 显示版本信息。 实例1:显示当前终端 [root@CentOS7 ~]# tty /dev/pts/3

4、startx 当我们在终端下想启动图形界面时,我们都会通过输入startx来实现,该命令可以启动一个Xserver,而且可以启动一个漂亮的图形界面。 startx [ [ client ] options ... ] [ -- [ server ] options ... ]。startx其实就是一个脚本,它启动X server就是通过调用xinit命令实现的,startx的参数将全部传给xinit。因此,这些参数的意义和xinit的参数是一样的。

5、export 功能说明:   设置或显示环境变量。 语法:export [-fnp][变量名称]=[变量设置值] 参数: -f  代表[变量名称]中为函数名称。 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p  列出所有的shell赋予程序的环境变量。 实例1:显示当前系统上所有环境变量 直接使用export不加任何选项 实例2:设置环境变量 [root@Python ~]# export PATH="$PATH:/home/Python" [root@Python ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/Python 实例3:定义环境变量赋值

6、pwd pwd命令用于显示当前工作目录。 语法 pwd [--help][--version] 参数说明: --help 在线帮助。 --version 显示版本信息。 实例:查看当前所在目录 [root@CentOS7 network-scripts]# pwd /etc/sysconfig/network-scripts

7、history 用于显示历史记录和执行过的指令命令。history命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量 HISTSIZE进行控制。 语法: history [选项] [参数] -c: 清空命令历史; -d offset:删除指定命令历史 -r: 从文件读取命令历史至历史列表中; -w:把历史列表中的命令追加至历史文件中; history #:显示最近的#条命令 环境变量: 1> HISTSIZE:命令历史的条数 2> HISTFILE:默认为~/.bash_history 3> HISTFILESIZE:HISTFILE文件记录历史的条数 调用历史命令: 1> !# 重复执行第#条命令 2> !! 重复执行上一条命令 3> !str 执行指定str开头的命令(最后一个) 4> !? 获得最后执行的状态码 控制命令历史的记录方式: 1> ignoredups 忽略重复 2> ignorespace 忽略空白开头 3> ignoreboth 上面2个都启用 实例1:显示已记录的历史命令 实例2:删除历史命令中某条历史命令 [root@CentOS7 ~]# history -d 391 实例3:显示最近10条历史命令 [root@CentOS7 ~]# history 10 实例4:清空所有历史命令 [root@CentOS7 ~]# history -c

8、shutdown、poweroff、reboot 1> shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。 命令示例: [root@CentOS7 ~]# shutdown [root@CentOS7 ~]# shutdown now [root@CentOS7 ~]# shutdown 13:20
[root@CentOS7 ~]# shutdown -p now ##关闭机器 [root@CentOS7 ~]# shutdown -H now ##停止机器
[root@CentOS7 ~]# shutdown -r09:35 ##在 09:35am 重启机器 [root@CentOS7 ~]# shutdown -c ##取消 2> poweroff 会发送一个 ACPI 信号来通知系统关机。 命令示例: [root@CentOS7 ~]# poweroff 关闭机器 [root@CentOS7 ~]# poweroff --halt 停止机器 [root@CentOS7 ~]# poweroff --reboot 重启机器 3> reboot 通知系统重启 [root@CentOS7 ~]# reboot 重启机器 [root@CentOS7 ~]# reboot --halt 停止机器 [root@CentOS7 ~]# reboot -p 关闭机器

9、hwclock、date 1> date date 可以用来显示或设定系统的日期与时间。 语法: date [OPTION]... [+FORMAT] FORMAT %H 小时(以00-23来表示)。 %I 小时(以01-12来表示)。 %K 小时(以0-23来表示)。 %l 小时(以0-12来表示)。 %M 分钟(以00-59来表示)。 %P AM或PM。 %r 时间(含时分秒,小时以12小时AM/PM来表示)。 %s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 %S 秒(以本地的惯用法来表示)。 %T 时间(含时分秒,小时以24小时制来表示)。 %A 星期的完整名称。 %D 日期(含年月日)。 %Y 年份(以四位数来表示)。 MM 月份(必要) DD 日期(必要) hh 小时(必要) mm 分钟(必要) ss 秒(选择性) 实例1:显示当前系统时间 [root@CentOS7 ~]# date Sat Dec 15 19:40:33 CST 2018 实例2:格式化输出时间 [root@CentOS7 ~]# date +"%Y-%m-%d %H:%M:%S" 2018-12-15 19:45:49 实例3:修改系统时间 [[root@CentOS7 ~]# date -s "2012-12-12 12:12:12" Wed Dec 12 12:12:12 CST 2012

2> hwclock、clock 命令可以用来显示/设置硬件时钟命令。 -s, --hctosys:以硬件为准,把系统调整为与硬件时间相同; -w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;

五、获取Linux系统帮助信息 获取命令的使用帮助: 内部命令: help COMMAND 外部命令: (1) 命令自带简要格式的使用帮助 ~]# COMMAND --help (2) 使用手册:manual 位置:/usr/share/man ~]# man COMMAND

				SECTION:
					NAME:功能性说明
					SYNOPSIS:语法格式
					DESCRIPTION:描述
					OPTIONS:选项
					EXAMPLES:使用示例
					AUTHOR: 作者
					BUGS: 报告程序bug的方式
					SEE ALSO: 参考
					...

				SYNOPSIS: 
					[]:可选内容;
					<>:必须提供的内容;
					a|b|c:多选一;
					...:同类内容可出现多个;

			使用手册:压缩格式的文件,有章节之分;
				/usr/share/man
					man1, man2, ...

					1:用户命令;
					2:系统调用;
					3:C库调用;
					4:设备文件及特殊文件;
					5:文件格式;(配置文件格式)
					6:游戏使用帮助;
					7:杂项;
					8:管理工具及守护进行;

				~]# man CHAPTER COMMAND

					注意:并非每个COMMAND在所有章节下都有手册;
						查看:
							~]# whatis COMMAND

							注意:其执行过程是查询数据库进行的;
								手动更新数据库:
									~]# makewhatis

			man命令打开手册以后的操作方法:
				翻屏:
					空格键:向文件尾翻一屏;
					b: 向文件首部翻一屏;
					Ctrl+d:向文件尾部翻半屏;
					Ctrl+u:向文件首部翻半屏;
					回车键:向文件尾部翻一行;
					k: 向文件首部翻一行;
					G:跳转至最后一行;
					#G: 跳转至指定行;
					1G:跳转至文件首部;

				文本搜索:
					/keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
					?keyword:从文件尾部向文件首部依次查找;	
						n: 与查找命令方向相同;
						N: 与查找命令方向相反;

				退出:
					q: quit

六、Linux发行版的基础目录名称命名法则及功用规定 linux文件命名法则: 1.文件名严格区分大小写 2.文件可以使用除/以外任意字符 3.文件名长度不能超过255字符 4.以.开头的文件为隐藏文件 在各种版本的linux发行版中,文件系统必要遵循FHS(Filesystem Hierarchy Standard,文件系统结构标准),它定义了一个发行版所必须有的文件目录和可选的文件目录。 FHS: Filesystem Hierarchy Standard /bin:所有用户可用的基本命令程序文件; /sbin:供系统管理使用的工具程序; /boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等; /dev:存储特殊文件或设备文件; 设备有两种类型:字符设备(线性设备)、块设备(随机设备); /etc:系统程序的配置文件,只能为静态; /home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME; /root:管理员的家目录;可选; /lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块 libc.so.:动态链接的C库; ld:运行时链接器/加载器; modules:用于存储内核模块的目录; /lib64:64位系统特有的存放64位共享库的路径; /media:便携式设备挂载点,cdrom, floppy等; /mnt:其它文件系统的临时挂载点; /opt:附加应用程序的安装位置;可选路径; /srv:当前主机为服务提供的数据; /tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限; /usr:usr Hierarchy,全局共享的只读数据路径; bin, sbin lib, lib64 include:C程序头文件; share:命令手册页和自带文档等架构特有的文件的存储位置 local:另一个层级目录; X11R6:X-Window程序的安装位置 src:程序源码文件的存储位置 /usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序; /var:/var Hierarchy,存储常发生变化的数据的目录; cache Application cache data lib Variable state information local Variable data for /usr/local lock Lock files log Log files and directories opt Variable data for /opt run Data relevant to running processes spool Application spool data tmp Temporary files preserved between system reboots

		/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
		/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;