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

      一台完整的计算机应该有硬件和软件共同组成。

      硬件组成按照冯.诺依曼体系机构可以分为:控制器、运算器、存储器、输入设备和输出设备五部分组成。

      控制器:计算机控制器是计算机的神经中枢,指挥全机中各个部件自动协调工作。在控制器的控制下,计算机能够自动按照程序设定的步骤进行一系列操作,以完成特定任务。

            控制器内部的主要部件如下:

                   指令寄存器:存放由存储器取得的指令。

                   译码器:将指令中的操作码翻译成控制信号。

                   时序节拍发生器:产生时序脉冲节拍信号,使计算机有节奏、有次序地工作。

                   操作控制部件:将控制信号组合起来,控制各个部件完成相应的操作。

                   指令计数器:计算并指出下一条指令的地址

        运算器(用于完成算术运算和逻辑运算)

        存储器:可分为内存储器和外部存储器。外部存储器一般用来存放静态数据,内存用来存放程序运行时的动态数据,以实现与cpu的高速通信。

        输入设备:用来实现将用户指令和需要处理的数据告诉计算机。

        输出设备:用来负责将计算机处理的命令或数据的结果回显给用户。

    软件:一般包括操作系统软件和应用程序软件。

        操作系统软件:由内核、库文件、shell程序等组成,会提供一个用户接口界面,实现将用户的指令下达给硬件,并回显给用户。

        应用程序软件:一般依赖于操作系统,用于完成某种特定功能的程序。



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

    linux只是一个内核,我们通常所说的Linux操作系统,指的是GNU/Linux,即采用linux内核的GNU操作系统。

    linux发行版有上百种之多,下面列举常见的几种重要的分支:

    Debian:以社区方式运作,没有商业公司支持;Debian使用的是dpkg来管理的包

        Ubuntu:以界面华丽著称

            kUbuntu

            Mint

            ...

        Knoppix:以安全著称

       slackware:

            S.u.S.E -> SuSE -> SUSE -> openSUSE YaST软件包管理,界面华丽,

       Redhat:rpm包管理方式

            RedHat Enterprise Linux

                 CentOS:Community ENTerprise OS 深受互联网公司喜爱

        Fedora Core:

        Mandrake

        Red Flag

        Turbolinux

    


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

    Linux的哲学思想:

    1、一切皆文件:

                把几乎所有的资源统统抽象为文件形式包括硬件设备,甚至是通信机接口等等。

    2、有众多功能单一的程序组成,一个程序只做一件事,并且做好。

                组合小程序完成复杂任务。

    3、尽量避免跟用户交互:

                目标:易于以编程的方式实现自动化任务。

    4、使用文本文件保存配置信息。


4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。


命令的语法通用格式:

        ~]# COMMAND OPTIONS AGRUMENTS

        COMMAND:

                      发起一个命令: 请求内核将某个二进制程序(COMMAND)运行为一个进程

        OPTIONS:

                     指定命令的运行特性:或者是调整命令运行时所要执行的代码和实现的功能。

                     使用不同的选项,运行的结果和运行方式是各不相同的。所以选项是用于调整命令的运行特性,指明要运行命令中的那一部分功能代码。


            选项有两种表现形式:

                    短选项: -C, 例如 -l, -d

                           注意:有些命令的选项没有-

                           如果同一命令同时使用多个段选项,多数可合并:如 -l -d 等价为 -ld(合并中间不能有空格)


                    长选项: --word, 例如 --help,--human-readable

                           注意: 长选项不能合并


                有些选项可以带参数,此称为选线参数

                       一般带选项的参数用空格分割(连接),长选项的参数用等号连接

        ARGUMENTS:

                 命令的作用对象:表示命令对什么生效


                注意:不同的命令的参数不同

                          有些命令可同时带多个参数,多个参数之间以空白字符分割。                

例如:

~]# ls -a -ld --color=auto --file-type /etc /tmp

    


ifconfig - configure a network interface

               临时配置网络接口参数或显示网络接口信息

        SYNOPSIS

                      ifconfig  [interface]

                      ifconfig  interface [aftype] options | address ...

        常用参数和选项:

                     interface         :系统上的某个网络设备:如:ens33、eth0

                     up                   :启动interface指定的网络设备

                     down              :关闭interface指定的网络设备

  注意:ifconfig命令将逐步被ip命令所取代

示例:           

~]# ifconfig es33 down   #关闭es33网络设备


    echo:display a line of text

            显示一行文本

            SYNOPSIS

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

                          -n

                                 do not output the trailing newline      不输出尾部换行符                    

                         -e

                                 enable interpretation of backslash escapes      启用反斜杠转义的解释(让转义符生效)

                                 If -e is in effect, the following sequences are recognized:

                                        \\     backslash

                                        \a     alert (BEL)

                                        \b     backspace

                                        \c     produce no further output

                                        \e     escape

                                        \f     form feed

                                        \n     new line

                                        \r     carriage return    回车符

                                        \t     horizontal tab     横向制表符

                                        \v     vertical tab       竖向制表符

                                        \0NNN  byte with octal value NNN (1 to 3 digits)

                                        \xHH   byte with hexadecimal value HH (1 to 2 digits)

                                        NOTE:  your  shell  may  have  its  own version of echo, which usually supersedes the version described here. 

                                                    Please refer to your shell's documentation for details about the options it supports.

                  STRING可以使用引号,单引号和双引号均可用。

                        单引号:强引用,变量引用不执行替换

~]# echo '$SHELL'
$SHELL

                        双引号:若引用,变量引用会被替换

~]# echo "$SHELL"
/bin/bash

                       注意:变量引用的正规符号

                                 ${VARNAME}  

例如:

~]# echo -e "hello\tworld"
helloworld


    tty: 显示当前连接的终端文件名到标准输出

        例如:

~]# tty
/dev/pts/1

    

startx:  启动图形界面

        

export: 设置或显示环境变量

        export [-fn] [name[=word]] ...

        export -p

        示例:

~]# export                    #没有任何选项和参数表示显示当前系统的环境变量
~]# export PNAME="test"      #设置一个环境变量PNAME,其值为test

    pwd: print working directory

            显示工作目录(打印当前工作目录)

        示例:

~]# pwd
/root
~]# cd /tmp
tmp]# pwd
/tmp

    

    history: 显示历史命令、清除历史命令、保存历史命令

        历史命令数量受环境变量HISTSIZE的值得影响

        history [OPTIONS] [AGRUMENTS]

        常用选项:

            -c:清空当前历史命令;

            -a:将历史命令缓冲区中命令写入历史命令文件中;

            -r:将历史命令文件中的命令读入当前历史命令缓冲区;

            -w:将当前历史命令缓冲区命令写入历史命令文件中。

        示例:

 ~]# histoyr 25           #显示最近运行的25条命令


    shutdown: Halt, power-off or reboot the machine

        关机或重启


        SYNOPSIS

            shutdown [OPTIONS...] [TIME] [WALL...]

        OPTIONS

            -h      : poweroff    关闭计算机

            -r      : reboot        重启

            -c      : cancel        取消关机命令

            -k     :Do not halt, power-off, reboot, just write wall message.

                      只是向所有终端发送消息

        TIME

            now      :立刻

            hh:mm   : 几点几分

            +m        :几分钟以后

        WALL:

            发送什么提示信息

 示例:

 ~]# shutdown -h now               #立刻关闭计算机
 ~]# shutdown +10                  #十分钟后关闭计算机
 ~]# shutdown +10 "关机"           #向所有用户发送“关机”信息,并于十分钟后关机,可使用shutdown -c取消本次关机


        

    wall:send a message to everybody's terminal.

        SYNOPSIS

            wall [-n] [ message ]



    poweroff         关闭计算机

    reboot            重启计算机

    hwclock

    hwclock, clock:query or set the hardware clock (RTC)

            查询或设置硬件时钟


            SYNOPSIS

                hwclock [function] [option...]


                -s, --hctosys

                    Set the System Time from the Hardware Clock.

                    从硬件时钟设置系统时间


                -w, --systohc

                    Set the Hardware Clock to the current System Time.

                    将硬件时钟设置为当前系统时间


    date:print or set the system date and time

            打印或设置系统的日期和时间

        SYNOPSIS

            date [OPTION]... [+FORMAT]

            显示系统日期或时间

                +FORMAT 格式字符串

                    %%     a literal %

                    %a     locale's abbreviated weekday name (e.g., Sun)

                    %A     locale's full weekday name (e.g., Sunday)

                    %b     locale's abbreviated month name (e.g., Jan)

                    %h     same as %b

                    %B     locale's full month name (e.g., January)

                    %D     date; same as %m/%d/%y

                    %F     full date; same as %Y-%m-%d

                    %T     time; same as %H:%M:%S

                    %Y     year

                    %m     month (01..12)

                    %d     day of month (e.g., 01)

                    %H     hour (00..23)

                    %M     minute (00..59)

                    %S     second (00..60)

                    %s     seconds since 1970-01-01 00:00:00 UTC

                           从1970年1月1日(Unix元年)0时0分0秒到命令执行那一刻经过的秒数

~]# date +"%F %T"
2018-05-06 17:50:11


            date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

                MM          月

                DD           日

                hh            时

                mm          分

                [cc]yy       年

                .ss            秒


                例如:

                    date 100108172018.22  或  date 1001081718.22 

                    设置时间为:2018年10月1日上午8点17分22秒




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

    获取命令的使用帮助:

            内部命令:

                ~]# 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在所有章节下都有手册

                            查询一个COMMAND在那个章节下有手册可使用下面的命令:

                            ~]# whatis COMMAND

                            注意:其执行过程是查询数据库进行的

                                手动更新数据库:

                                    ~]#  makewatis


                            例如:

~]# whatis passwd
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user's authentication tokens


                        man命令打开手册后的操作方法:

                            翻屏:

                                空格键   :向文件尾部翻一屏

                                b        :向文件首部翻一屏

                                Ctrl+d   :向文件尾部翻半屏

                                Ctrl+u   :向文件首部翻半屏

                                j|回车键 :向文件尾部翻一行

                                k        :向文件首部翻一行

                                g|1g|1G  :跳转到第一行

                                G        :跳转到最后一行

                                #g|#G    :跳转到指定行 如:2g|2G 跳转到第二行


                            文本搜索:

                                /KEYWORD :从文件首部向文件尾部依次查找(不区分大小写)

                                ?KEYWORD :从文件尾部向文件首部依次查找(不区分大小写)

                                    n:定位到下一个查找到的位置(与查找命令方向相同)

                                    N:定位到下一个查找到的位置(与查找命令方向相反)

                                

                            退出:

                                q:quit

                    选项:

                        -M /PATH/TO/SOMEDIR:到指定路径下查找命令手册并打开之

            (3)info COMMMAND

                 获取命令的在线文档


            (4)很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION

                 README: 程序的相关的信息

                 INSTALL:安装帮助

                 CHANGES:版本迭代时的改动信息


            (5)主流发行版官方文档

                 http://www.readht.com/doc


            (6)程序官方的文档:

                 官方站点上的“Document”


            (7)搜索引擎

                 google

                     keyword filetype:pdf

                     keywork site:domain.tld

                     ...


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

    linux各种发行版都遵循LSB(LinuxStandards Base)规则,使用一致的相同的基础目录名称,使用根文件系统结构(root filesystem),使用FHS(files Hierarchy Standard)层次结构。 

    FHS:

    Filesystem Hierarchy Standard (FHS):文件系统层级结构标准


    /:表示根目录,是所有目录的起点


    /bin : Essential user command binaries (for use by all users)

        所有用户可用的基本命令程序文件


    /sbin : System binaries

        供系统管理使用的工具程序


    /boot : Static files of the boot loader

        引导加载器必须用到的各静态文件

        kernel, initramfs(initrd), grub等


    /dev : Device files

        The /dev directory is the location of special or device files.

        存储特殊文件或设备文件

        设备文件有两种类型:

            字符设备(线性设备) 如:键盘,显示器等

            块设备(随机设备)  如:硬盘,内存等


    /etc : Host-specific system configuration

        The /etc hierarchy contains configuration files. A "configuration file" is a local file used to control the operation of a program; it must be static and cannot be an executable binary.

        系统程序的配置文件,只能为静态文件,不能是可执行的二进制文件。


    /home : User home directories (optional)

        普通用户的家目录的集中位置

        一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/username


    /root : Home directory for the root user (optional)

        root用户的家目录


    /lib : Essential shared libraries and kernel modules

        基本共享库文件和内核模块文件

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

        

            libc.so.*   The dynamically-linked C library (optional)

                           动态链接C库

            ld*          The execution time linker/loader (optional)

                          运行时链接/加载器

            /lib/modules    Loadable kernel modules (optional)

                                    用于存储内核模块的目录

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


    /media : Mount point for removeable media

        可移动设备挂载点

        cdrom,floppy等


    /mnt : Mount point for a temporarily mounted filesystem

              其他文件系统的临时挂载点


    /opt : Add-on application software packages

             第三方应用程序的安装位置;可选路径


    /srv : Data for services provided by this system

             当前主机位服务提供的数据


    /tmp : Temporary files

               为那些会产生临时文件的程序提供用于存储临时文件的目录,可供所有用户执行写入操作,有特殊权限。


    /usr : The /usr Hierarchy

             全局共享的只读数据路径

        /usr/bin, /usr/sbin不是启动要用到的,而是系统运行当中附加的一些功能要用到的。

        /usr/lib, /usr/lib64一般存放只供/usr/bin, /usr/sbin下面的命令要用到的库,但/usr/bin, /usr/sbin下面的应用程序可能会用到/lib和/lib64下面的库。

    Requirements

        The following directories, or symbolic links to directories, are required in /usr.


        Directory    Description

        bin             Most user commands

        include      Header files included by C programs

        lib             Libraries

        local         Local hierarchy (empty after main installation)

                        让系统管理员安装本地应用程序,通常用于安装第三方程序。

        sbin         Non-vital system binaries

        share       Architecture-independent data

    Specific    Options

        Directory   Description

        X11R6        XWindow System, version 11 release 6 (optional)

        games        Games and educational binaries (optional)

        lib<qual>   Alternate Format Libraries (optional)

        src              Source code (optional)


    /var : /var contains variable data files.

        存放经常发生变化的数据的目录

        Requirements

            The following directories, or symbolic links to directories, are required in /var.


            Directory   Description

            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

                            系统重启以后依然要留存的数据

            Several directories are `reserved' in the sense that they must not be used arbitrarily by some new application, since they would conflict with historical and/or local practice. They are:

                /var/backups

                /var/cron

                /var/msgs

                /var/preserve


    /proc : Kernel and process information virtual filesystem

        基于内存的虚拟文件系统,用于为内核和进程存储其相关信息,而且将这种信息的存储形式抽象为了文件系统的格式;这些信息都是有内核输出的,进程的相关信息也是由内核输出的,所以它们多为内核参数,例如:内核参数net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/目录下,因此其完整路径为/proc/sys/net/ipv4/ip_forward。

        为了保证一切皆文件而特殊设定的,我们运行中的操作系统在内存中,内核运行起来以后,内核自己也要输出很多信息让用户来查看了解内核到底运行什么状态的, 但我们说过用户不能直接跟内核打交道,内核所有信息向外输出是通过内核参数来实现的,但我们要查看内核信息又只能通过另外一种机制,这于一切皆文件的理念不相符,所以为了避免这样的问题,把内核参数抽象为、虚拟为跟文件系统一样有目录、有文件,文件也有数据,但他们其实不是。


    /sys sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径。其主要作用在于为管理Linux设备提供一种统一模型的接口。