Linux 理论基础

一、描述计算机的组成及其功能

冯.诺伊曼体系中,计算机有五大基本部件:控制器、运算器、存储器、输入设备、输出设备(I/0设备)。 

实际应用中,计算机包括CPU(控制器和运算器)、存储器(Memory内存和Disk外存)、Input输入设备、Output输出设备。


1、CPU(控制器和运算器)
  • 控制器:功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调各个部分能够正常工作。
  • 运算器:计算机的核心。对数据进行各种算数运算和逻辑运算。即对数据进行加工处理。
2、存储器

       存储器:狭义理解是计算机内存,广义理解是内部存储加外部硬盘。其主要作用是存储程序,各种数据,符号,控制命令等,并在处理器需要时提供所需要的信息。

包含RAM、ROM、cache。

  • RAM:随机存取存储器,random access memory。存取数据速度较快,是人们常说的内存,作为操作系统或其他正在运行中的程序的临时的数据存储介质。为什么说是”临时”呢,跟存储器的工作方式有关,这种存储器是基于电来工作的,一旦断电,其上的数据会全部消失,不能永久存储。随机存取存储器又分为静态随机存储器static RAM(SRAM)和动态随机存储器dynamic RAM(DRAM),制作材料不同且DRAM比较复杂,但是功耗低,已成为大容量RAM的主流。
  • ROM:read only memory image 只读存储器镜像,在这里我理解是人们所说的硬盘,工作方式是磁工作方式,可以永久存储数据。
  • cache:cache存储器,由于cpu的读取数据速度和内存读取数据的速度差的很多,内存和硬盘又差了很多,为了弥补这种不足,诞生了cache存储器,电脑中为高速缓冲存储器,位于cpu和内存之间,规模较小,但速度很高。
3、I/O设备

  • 输入设备:常见的输入设备:键盘、鼠标、磁带、磁盘、光盘等等。主要作用是将程序或原始数据、文字、字符、控制命令等信息输入到计算机中。
  • 输出设备:常见的输出设备:终端CRT、显示器、打印机等等。主要作用是它把计算机处理原始数据的最后或者中间结果、各种数据符号、控制信息等结果返回输出并显示。

4、其他硬件设备
  • 网卡、调制解调器、声卡、摄像头等等。
5、计算机的软件组成部分
        在计算机底层硬件的基础上,为了能够方便的被人类使用,人们将底层的硬件抽象成各种硬件接口,在硬件的接口上就是计算机内核组成的操作系统,在操作系统之上就是基于系统库或者其他软件库组成的系统软件和应用软件。
  • 系统软件:系统软件是负责管理计算机中各个独立的硬件,使得它们可以协调工作。系统软件可以让用户不需要关心底层硬件是如何工作的。一般来讲系统软件包括操作系统和一系列的基本工具如:编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具。
  • 应用软件:就是为了某种用途而开发的软件,可以是一个程序文件,也可以是多个程序文件组成的集合,也可以是众多的独立的程序组成的庞大的系统。软件就不举例了,太多了。。


二、按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别

1、Linux内核和发行版的关系

        Linux发行版就是由Linux内核与各种常用软件的集合产品,如今全球大约有数百款的Linux发行版本。Linux内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

        Linux发行版就是由Linux内核与各种常用软件的集合产品,如今全球大约有数百款的Linux发行版本。

无标题

Linux常见发行版

Linux发行版有三大主流分支:Debian、Slackware、Redhat,包含的主要发行版分别如下:

  1. Debian 
    • Ubuntu 
      Linux mint
    • Knopix
  2. Slackware 
    • S.u.S.E 
      SLES-SuSE Linux Enterprise 
      OpenSuSE
  3. Redhat 
    • RHEL-RedHat Enterprise Linux 
      CentOS-Community ENTerprise
    • Fedore Core

除了三大主流分支,还有两种比较流行的发行版:

  1. Gentoo
  2. ArchLinux

3

Linux发行版之间的关系

  • Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比RHEL,Fedora打包了显著的更多的软件包。其中一个原因是,多样化的社区参与Fedora的建设;它不只是一家公司。在这个过程中,CentOS用于活动,演示和实验,因为它是对最终用户免费提供的,并具有比Fedora的一个更长的发布周期(通常每隔半年左右发布一个新版本)。
  • SUSE, SUSE Linux Enterprise Server (SLES), 和openSUSE 之间的关系类似于 Fedora, Red Hat Enterprise Linux, 和CentOS的关系。
  • Debian是包括Ubuntu在内许多发行版的上游,而Ubuntu又是Linux Mint及其他发行版的上游。Debian在服务器和桌面电脑领域都有着广泛的应用。Debian是一个纯开源计划并着重在一个关键点上,稳定性。它同时也提供了最大的和完整的软件仓库给用户。

Linux发行版分类

Linux发行版都是基于同一内核,所以除了外观和名字不一样外,其他地方的区别不是很大,按用途大致分为桌面版和企业版:

  1. 桌面版: 
    Ubuntu、Debian、Fedora、CentOS、openSUSE等。由于安装了图像界面,界面美观、操作方便,比较适合新手,但相对于企业版来说较消耗资源。
  2. 企业版: 
    RHEL、CentOS、Debian、Ubuntu、openSUSE、SLES等。系统稳定性好,资源消耗较小,满足企业需求,但基本都是命令行界面,需要有一定的基础才能上手操作。

按照维护方式分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。

  1. 商业公司维护: 
    RHEL、CentOS、SLES等
  2. 社区组织维护: 
    Debian、Ubuntu等

linux各发行版特点

各发行版的思想,如图:

4

  • 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的稳定性较差,最好只用于桌面应用。
  • Debian,或者称Debian系列,包括Debian和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的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:) 
    Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
  • Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo 被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统 
    不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软 件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。
  • 最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。 
    FreeBSD拥有两个分支: stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运 行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选 择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。

3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述

① 一切皆文件 
    把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等,便于统一管理和定义; 
    对文件的操作有:open,read,write,close,delete,create 
②由众多功能单一的程序组成 
    一个程序只做一件事,并且做好,保证了Linux内核的高效运行; 
③ 组合小程序完成复杂任务 
    通过连接多个简单的程序实现复杂的功能; 
④尽量避免和用户交互 
    更贴近编程,易于以编程的方式实现自动化任务; 
⑤使用文本文件保存配置信息 
    修改配置信息只需要任意一款文本编辑器就可以进行。

4、说明Linux系统上命令的使用格式

Linux命令使用的格式:

# [COMMAND] [OPTIONS...] [ARGUMENTS]

    OPTIONS: 用于启用或关闭命令的某个或某些功能。支持短线选:-c;长选项:--word

    ARGUMENTS:命令的作用对象,想命令提供数据;

     发起一命令:请求内核将某个二进制程序运行为一个进程;
程序 --> 进程

态 --> 动态(有生命周期)

      例如:ls -ld /var /etc 

1、ifconfig

查看linux操作系统网卡等信息 

[root@shaokang ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.200.6.175  netmask 255.255.255.0  broadcast 10.200.6.255
        inet6 fe80::20c:29ff:fe64:20b4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:64:20:b4  txqueuelen 1000  (Ethernet)
        RX packets 2682459  bytes 417126321 (397.8 MiB)
        RX errors 0  dropped 54  overruns 0  frame 0
        TX packets 2654381  bytes 220078350 (209.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2、echo

回显命令

echo [SHORT-OPTION]... [STRING]...

    -n:禁止自动添加换行符号

    -e:允许使用转义符

        \n:换行

        \t:制表符

示例一:输出hello world 使用-n不换行

[root@localhost ~]# echo -n hello world
hello world[root@localhost ~]#
示例二:使用-e和\t,在hello和world之间插入一个制表符 
[root@localhost ~]# echo -e "hello\tworld"
hello   world
[root@localhost ~]#

3、tty

查看当前终端数量

[root@localhost ~]# tty
/dev/pts/0

4、startx

在虚拟中断下启用图形界面

5、export

环境变量的声明和复制,并在之后的子进程中生效

export name=VALUE

示例:对变量name赋值tom

[root@localhost ~]# export name=tom
[root@localhost ~]# echo $name
tom
[root@localhost ~]# bash
[root@localhost ~]# echo $name
tom

6、PWD

显示当前目录

示例:

[root@localhost sysconfig]# pwd
/etc/sysconfig

7、history

命令历史

 -d OFFSET:删除第OFFSET条命令

 -c:清楚历史命令

 #:显示历史中最近的#条命令

 -a:手动追加当前会话缓冲区的命令历史至历史文件中

示例:显示最近的3条命令

[root@localhost sysconfig]# history 3
 1014  pwd
 1015  bash
 1016  history 3

8、shutdown,poweroff,reboot

    shutdown 以一种安全的方式关闭系统,所有登入的用户都将得到通知,并且在TIME到达前的5分钟内新用户将被阻止登入

    shutdown [OPTION]... TIME [MESSAGE]

        -r:reboot

        -h:halted或者powered off

        -H:halted

        -P:powered off

        -c:取消shutdown

        -k:只是发送警告信息和拒绝新用户登入。并不关闭系统。

        

        TIME

            now:立刻

            +m:从命令提交开始,过多久之后,如+5

            hh:mm:指明具体时间

    

    poweroff用来关闭计算机并切断电源。是reboot的一个软连接

  reboot 重启

        -f,--force:强制关闭系统

        -p,--poweroff:调用halt命令


9、hwclock

    hwclock 查询和设置硬件时钟

        -r:读取硬件时钟信息

        --set:设置硬件时钟

        -s:硬件时钟同步系统时间

        -w:系统时间同步硬件时钟

示例:

[root@localhost local]#  date
2018年 10月 20日 星期二 18:21:03 CST
[root@localhost]# hwclock
2017年07月10日 星期一 20时52分08秒  -0.397741 秒
[root@mysql local]# hwclock -s 
[root@mysql local]# 


   date [OPTION]... [+FORMAT] 显示系统时间

        FORMAT:格式符号

            %D

            %F

            %T

    date [MMDDhhmm[[CC]YY][.ss]] 设置系统时间

示例:

[root@localhost]# date
Sat Dec 10 17:06:37 CST 2016
[root@localhost]# date +%D
12/10/16
[root@localhost]# date +%T
17:05:51

示例:修改系统时间

[root@mysql local]# date 102018202015.30
2015年 10月 20日 星期二 18:20:30 CST
[root@mysql local]# date
2015年 10月 20日 星期二 18:20:31 CST


5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的

linux系统分为内部命令和外部命令两种;
可以通过type命令,来查看linux系统命令是内部命令还是外部命令。

内部命令的帮助信息,通过" ~]#help 命令",来获取帮助。
外部命令的帮助信息,有一下几种:
1、~]# 命令 --help
2、~]# man 命令
3、~]# info 命令
4、查看程序自带的帮助信息,通常在/usr/share/doc/目录下。
5、官方文档
6、google

man文档的章节:
1、用户命令帮助信息
2、系统调用帮助信息
3、libray库调用帮助信息
4、特殊文件(设备文件)帮助信息
5、配置文件的格式帮助信息
6、游戏使用帮助信息
7、杂项

8、管理工具及守护进程帮助信息

6、请罗列Linux发行版的基础目录名称命名法则及功用规定

/bin:所有用户可用的基本命令程序文件
/sbin:供系统管理员使用的工具程序
/boot:引导加载器必须用到各静态文件:kernel,initramfs(initrd),grub等

/dev:存储特殊文件或设备文件

设备有两种类型:字符设备(线性设备)、块设备(随机设备):
键盘是最简单的字符设备,硬盘是块设备

/etc:系统程序的配置文件,只能为静态
/home:普通用户的家目录的集中位置:一般每个普通用户的家目录默认为此目录下与用户名同名的子目录/home/USERNAME
/root:管理员的家目录,可选路径

/lib:为系统启动或根文件系统上的应用程序(/bin,/sbin)提供共享库,以及为内核提供内核模块

  libc.so.<em>:动态链接的C库
      ld</em>:运行时链接器/加载器
      modules:用于存储内核模块的目录

/lib64:64位系统特有的存放64位共享库的路径;

/media:便携式设备挂载点,cdrom,floppy等
/mnt:其他非主要文件系统的临时挂载点
/opt:附加应用程序的安装位置,可选路径
/srv:当前主机为服务提供的数据,
/tmp:为哪些会产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户执行写入操作,有特殊权限。

/usr:/user Hierarchy,全局共享的只读数据路径

/bin,/sbin:不是系统启动时,必须启动的程序
      /lib,/lib64:
      incloude:C程序头文件
      share:命令手册页和命令自带文档等架构特有的文件存储位置
      local:另一个层级目录
      X11R6:x-windows程序的安装位置
      src:程序源码文件的存储位置

/user/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_froward,虚拟为net/ipv4/ip_forward,存储于/proc/sys,因此完整路径为/proc/sys/net/ipv4/ip_forward
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理linux设备提供一种统一模型的接口,(linux kernel2.6以后才出现的)











猜你喜欢

转载自blog.csdn.net/mestryas/article/details/80716530