Linux及计算机基础介绍
计算机的组成及其功能
What:计算机的组成是什么?
-
计算机的主要部件:
-
CPU:可分为运算器、控制器、寄存器、缓存等
-
存储器:比如内存。执行程序时,会将程序及相关数据加载进内存,供CPU读取
-
输入设备:比如:键盘。用于下达指令及输入数据。
-
输出设备:比如显示器。用户显示和输出指令执行的结果等
-
冯诺依曼体系中提出的五大部件为:运算器、控制器、存储器、输入、输出
How:计算机如何工作的?
1. 硬盘等存储介质用于存放程序及数据。
-
程序 = 指令 + 数据
2. 用户通过输入设备,下达执行某个程序
3. 计算机会先将该程序及相关数据加载到内存中。
-
因为CPU只能直接访问内存
-
内存在内部是划分存储单元,每个单元为8bit
-
内存中每个单元都有编址。
4. CPU先读取该指令,当需要用到数据时,再从内存中载入响应数据
-
CPU要能执行某指令,首先它得要支持。而CPU所能支持的指令集合称之为指令集。不同的CPU,指令集也不同。
-
指令集中指令又可分为两类:普通指令、特权指令
-
CPU有位长之分。目前有32位和64位CPU
-
不同的位长,代表CPU同一时间可以访问内存单元的数量的多少
5. 如果第一个指令运行完后,结果还需和其他数据再进行运算,那么CPU会先将该结果放入寄存器中,待用时再取出。
6. 最后将结果输出到输出设备
Why:为什么有了内存,还需要有CPU缓存?
由于内存的频率远低于CPU频率。因此通过CPU缓存来解决速度不同的问题。减少等待时间,提高CPU效率。
缓存为王~!
What:那么什么是操作系统?
操作系统是由内核和众多应用程序组合而成的。
而内核位于硬件之上,应用程序之下。它驱动了硬件,并向上提供了系统调用,使得程序员能方便的调用系统资源。
内核(kernel)的作用:
1、驱动底层硬件
2、将各底层硬件资源抽象成简单的资源
3、管理各程序的运行,把有限资源分配给各程序
-
对于CPU,通过时隙复用
-
对于内存,通过空间复用
它的存在,使得所有程序在任意时候都认为自己是独占着系统资源。对于程序而言,所要面对的也只有操作系统而已
Linux发行版本
1、Linux的发行版
Linux内核以及在其上运行的软件都是基于开源协定,以源码的方式共享出来,任何人都可以随意拿来编译安装。也因此增加了使用难度。
为了方便安装,很多组织和公司便提供了在不同平台上已编译好的Linux系统。我们称之为发行版。发行版依旧须遵循开源协定,对外免费共享出来。
2、常见的Linux发行版:
主流的有三种Debian
,Slackware
,Red Hat
Debian
Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing和unstable。Debian最具特色的是apt-get /dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去。
-
Ubuntu是基于Debian的unstable版本加强而来,可以这么说Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有多个版本可供选择,比如基于unity的Ubuntu,基于Gnome的Ubuntu Gnome,基于KDE的Kubuntu,基于LXDE的Lubuntu以及基于Xfce的Xubuntu等。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
Red Hat
Redhat,应该称为Redhat系列,Redhat linux是全球在服务器上应用最广泛的linux操作系统,在效率、扩展性、可靠性、安全性、集成虚拟化等都具备领先其他linux的特点,被誉为最值得信赖的数据中心平台系统,其主要应用在服务器领域。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。
-
RHEL(Redhat Enterprise Linux),Redhat为期提供完善的售后服务,并以服务提供收费。
-
CentOS(Community ENTerprise Operating System),它是来自Red Hat Enterprise Linux依照开放源代码规进行重新编译而成的,并且仅仅是将logo标识替换掉。所以也可以说CentOS是redhat服务器的免费版。新版的CentOS大约每两年发布一次,每个版本大概每6个月更新一次,CentOS也提供技术支持,但仅限于社区的官方邮件、论坛和聊天室,并且CentOS不负任何商业责任。
-
Fedora(由原来的Redhat桌面版本发展而来,免费版本),Redhat会将最新的技术或程序用在这个发行版中,以作测试之用。
Slackware
Slackware 由Patrick Volkerding创建于1992年。算起来应当是历史最悠久的Linux发行版。曾经Slackware非常的流行,但是当Linux越来越普及,用户的技术层面越来越广(更多的新手)后,Slackware渐渐的被新来的人们所遗忘。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的 Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。
-
SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品。SUSE 有两个linux版本,一个是open SUSE,另一个是Enterprise linux,Enterprise linux是为企业而设计的,要长期使用,需要收一定的费用的。而前一个是完全按照开源社区的要求,是免费的和放开源代码的。Zypper 和 Yast 是 SUSE Linux 平台上的软件包管理工具,他们的底层使用了 RPM。
Linux的哲学思想
1、一切皆文件:
在Linux中最核心的思想便是一切皆文件,从普通文件到设备,在Linux上都是以文件形式放置。Linux的文件类型有:普通文件、目录文件、块设备文件、字符文件、符号链接文件、命名管道和套接字文件。就连内核和进程的运行状态也以文件的方式存放着。
2、由众多功能单一的程序组成,一个程序只做一件事,切做好。
在Linux上每一个指令便是一个小程序,而每一个指令只负责一件事,通过不同的命令选项,完善了指令的功能。
3、组合单一的小程序完成复杂任务。
体现在了Linux的小巧精简。Linux上的没有像Windows那样,每个软件大道几百M。甚至几十G。他们通过组合小程序实现复杂功能,复用了相同功能的程序,减小软件的大小,提高了软件开发的效率。
4、尽量避免与用户交互。
这也是为了,能方便shell脚本的开发。减少交互,就能方便的将单一小程序组合起来使用。
5、使用文本文件保存配置信息
这点说道根本也是一切皆文件的体现,一个文本编辑器便能完成所有软件的配置,不需要额外的应用程序。
Linux上的命令
命令提示符:prompt(bash)
#:管理员账户,为root;拥有最高权限,能执行所有操作
$:普通用户,非root用户;不具有管理权限,不能执行系统管理类操作
命令的语法通用格式:
# COMMAND OPTIONS ARGUMENTS
COMMAND:发起一命令:请求内核将某个二进制程序运行为一个进程;
-
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
-
命令必须遵循特定格式规范:ELF(Linux),exe(Windows), msi(Windows)
-
可以使用file命令查看:
-
命令分为两类:
-
內建命令: 由shell程序的自带的命令
-
外部命令:独立的可执行程序文件,文件名即命令名
-
可使用type命令查看:
OPTION:指定命令的运行特性;
选项有两种表现形式:
短选项:-C, 例如-l, -d
注意:有些命令的选项没有-;
如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
长选项:–word, 例如–help, –human-readable
注意:长选项不能合并;
注意:有些选项可以带参数,此称为选项参数;
ARGUMENTS:命令的作用对象;命令对什么生效;
不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
常用命令:ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date
【ifconfig】:configure a network interface 配置网络接口
【echo】: display a line of text
echo [SHORT-OPTION]… [STRING]…
-
-n:不进行换行
-
-e:让转义符生效
1、\n:换行
2、\t:制表符
-
在shell中string可以使用引号,单引号和双引号均可用
1、单引号:强引用,变量引用不执行替换
2、双引号:弱引用,变量引用会被替换
-
注意:变量引用的正规符号:${name},只不过一般花括号可以省略
【tty】: print the file name of the terminal connected to standard input
终端:
串行终端
/dev/ttyS#
物理终端
/dev/console
虚拟终端:图形终端
/dev/tty#
伪终端:远程连接,图形环境打开的命令接口
/dev/pts/#
【startx】:打开图形界面
启动图形界面:startx & (不加&,只有等指令运行结束后才能返回命令听提示符)
【export】:为 shell 变量设定导出属性。
设置语言为英文:
【pwd】:print name of current/working directory
实例:
【history】:显示或操纵历史列表。
-c:清空命令历史列表
-d offset:删除指定的历史命令
-r:从文件读取命令历史到历史列表中
-w:把历史列表中的命令追加到历史文件中
history #:显示最近的#条命令
【shutdown】:Halt, power-off or reboot the machine
shutdown [OPTIONS…] [TIME] [WALL…]
【reboot】,【halt】,【poweroff】:一般情况下是调用shutdown进行关机处理等处理
【hwclock】:query or set the hardware clock
hwclock [function] [option…]
显示硬件时钟:
hwclock -s :系统时间以硬件时间为准,–hctosys
hwclock -w : 硬件时间以系统时间为准,–systohc
【date】:print or set the system date and time
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
date +%m 获取月份:
设置系统时间:
格式:date MMDDhhmm[CC]YY.ss
月 日 时 分 年 秒
Linux上获取命令帮助
1、内建命令:
#help 命令
如:help cd
2、外部命令
1、# 命令 –help
如:dirname –help
2、使用手册:manual
位置:/usr/share/man
man介绍:
#man 命令名 (先解压后显示)
SECTION:
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS :选项
EXAMPLES:使用示例
AUTHOR:作者
BUGS:报告程序bug的方式
SEE ALSO:参考
……
使用帮助中命令格式中的字符意义:
[]:可选的部分
{a|b}:分组,a和b作为一个使用单元来使用
|:或者,只能选其一
<>:必不可少的部分
…:同类内容可以出现多个
man的简要使用机制:
翻屏:
空格键:向文件尾部翻一屏
b:向文件首部翻一屏
回车键:向文件尾部翻一行
k:向文件首部翻一行
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
1G:跳转至第一行
#G:跳转至指定行(#为行号)
G:跳转至最后一行
文本搜索:(不区分关键字大小写)
/keyword:向文件尾部搜索
?keyword:向文件首部搜索
n:顺着查找方向下一个
N:逆着查找方向下一个
q:退出
补充:man其实能为命令(普通命令、管理命令)、程序的配置文件格式、系统调用、库调用、游戏及其他不便归类的文件提供帮助手册
/usr/share/man
man1,man2,……
man命令的分段机制:
1:用户命令:
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:文件格式(配置文件格式)
6:游戏使用帮助
7:杂项
8:管理命令及守护进程
并非每个命令在所有章节下都有手册,
查看某关键字在那些段落有使用帮助
whatis Keyword 精确查找
提示:如果whatis的数据库尚未生成,可以使用makewhatis手动进行
旧版的 Linux 这个指令是使用 makewhatis!CentOS7使用 mandb 了!
man -k Keyword 模糊查找
man -M /path/to/somedir:到指定目录下查找命令手册并打开
man的文件在:/usr/share/man
3、很多应用程序自带有帮助文档:/usr/share/doc/
README:程序的相关信息
INSTALL:安装帮助
CHANGES:版本迭代时的改动信息
4、info 命令:获取在线文档
5、主流发行版官方文档
http://www.redhat.com/doc
6、程序官方的文档
官方站点上的“Document”
7、google:
linux filetype:ppt 特定格式文件
keyword site:magedu.com 在特定网页内搜素
Linux基础目录名称及功能规定
/bin:所有用户可用的基本命令程序文件
/sbin:供系统管理使用的工具程序文件
————————————————————————————
存放为了保证操作系统正常运行而提供的可执行程序
/usr/bin
/usr/sbin
————————————————————————————
用来存放第三方软件的程序
/usr/local/bin
/usr/local/sbin
/boot:引导加载器必须用到的各静态文件:kernel、initramfs(initrd)、bootloader(grub)
/dev:存储特殊文件或设备文件
设备有两种类型:字符设备(线性设备,有时序)、块设备(随机设备,可以任意访问)
/etc:系统程序的配置文件 ,只能为静态
/etc/sysconfig:系统级别的配置文件
/etc/init.d:系统服务脚本
/home:普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录
/root:管理员的家目录
/lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库
ld*:运行时链接器/加载器
modules:用于存储内核模块的目录
/lib64:64位系统特有的存放64位共享库的路径
/media:专用的挂载位置,通常用来挂载便携式设备。(cdrom,floopy等)
/mnt:专用挂载位置,挂载额外的存储设备。
/misc:备用目录
/opt:早期附加应用程序的安装位置:
/proc:基于内存虚拟文件系统(关机后就没了),用于为内核及进程存储运行时的相关信息,他们多为内核参数,例如:net.ipv4.ip_forward(参数的值就是这个文件的内容),虚拟为net/ipv4/ip_forward,存储于/proc/sys/net/ipv4/ip_forward
/sys:sysfs虚拟文件系统提了一种比proc更为理想的访问内核数据的途径,主要作用在于为管理Linux设备提供一种统一的模型接口(伪文件系统,系统级别的,用于配置外围设备特性的参数。)
详见:www.ibm.com/developerworks/cn/linux/l-cn-sysfs
/srv:当前主机为服务提供的数据
/tmp:存取临时文件的目录,可供所有用户使用,有特殊权限,默认存放30天
/usr:usr Hierarchy, shared 所有遵循协议的系统都可以使用,readonly 只读
bin,sbin
lib,lib64
/usr/include:C程序头文件
share:命令手册页和命令自带文档等架构特有的文件的存储位置
local:又一个层级目录
X11R6:XWindow程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local hierarchy,让系统管理员安装本地应用程序(为了与系统原有程序不冲突,而装在一个新的目录下),也通常用与安装第三方程序
在这个路径下也同样拥有类似/usr下的目录
bin、sbin、etc、include、man、share、src等
/var:存储常发生变化的数据目录
原创文章,作者:lucklyme,如若转载,请注明出处:http://www.178linux.com/47364
评论列表(1条)
黑屏是不是很丑,可以研究一下makedown格式