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

   现在计算机遵循冯洛伊曼体系结构:

   运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。

   控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。

   存储器:用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。

   输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘。

   输出设备:将数据或程序的处理结果展示给用户,例如:显示器。


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

    1).Red Hat Linux

        Red Hat Enterprise Linux;

        CentOS;

        Fedora

    2).Debian

        ubuntu

            Linux Mint

        ....

    3).Slackware

        suse

            opensuse

    4).Gentoo

    5).Arch Linux

    6).LFS

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

    Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版。

    CentOS是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成,和Red Hat Enterprise Linux完全兼容。

    Fedora基于Red Hat Linux,是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。


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

    1)一切皆文件

        把几乎所有的资源,包括硬件设备都组织为文件格式

     2)由从多单一目的的小程序组成

        一个程序只实现一个功能,并且要做好

    3)组合小程序完成复杂任务

        通过多个不同的程序的功能结合,完成复杂的任务需求

    4)尽可能避免跟用户交互

        为了方便脚本编程以实现自动化执行

    5)使用纯文本文件保存程序的配置信息

        使用一个文件编辑器即可完成系统及服务配置工作


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

    命令的语法格式:

        COMMAND [OPTIONS] [ARGUMENTS]

    1)ifconfig    

       ifconfig是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。
      语法:ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]       
     参数:        
       up 启动指定网络设备/网卡
       down 关闭指定网络设备/网卡
       -arp 设置指定网卡是否支持ARP协议
       -promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
       -allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
       -a 显示全部接口信息
       -s 显示摘要信息(类似于 netstat -i)
       add 给指定网卡配置IPv6地址
       del 删除指定网卡的IPv6地址
       <硬件地址> 配置网卡最大的传输单元
       mtu<字节数> 设置网卡的最大传输单元 (bytes)
       netmask<子网掩码> 设置网卡的子网掩码
       tunel 建立隧道
       dstaddr 设定一个远端地址,建立点对点通信
       -broadcast<地址> 为指定网卡设置广播协议
       -pointtopoint<地址> 为网卡设置点对点通讯协议
       multicast 为网卡设置组播标志
       为网卡设置IPv4地址
       txqueuelen<长度> 为网卡设置传输列队的长度
       示例:
         # ifconfig   #处于激活状态的网络接口
         # ifconfig eth0  #显示eth0的网卡信息
         # ifconfig eth0 192.168.1.56 netmask 255.255.255.0  #给eth0网卡配置IP地址,并加上子掩码         

    2)echo

        允许在标准输出上显示STRING(s).
        -n 不输出行尾的换行符.
        -e 允许对下面列出的加反斜线转义的字符进行解释.
        -E 禁止对在STRINGs中的那些序列进行解释.
        --help 显示帮助并退出(须单独运行)
        --version 输出版本信息并退出(须单独运行)
        在没有 -E 的情况下,可承认并可以内置替换以下序列:          

            \NNN 字符的ASCII代码为NNN(八进制)

            \\ 反斜线

            \a 报警符(BEL)

            \b 退格符

            \c 禁止尾随的换行符

            \f 换页符

            \n 换行符

            \r 回车符

            \t 水平制表符

            \v 纵向制表符

        示例:

            # echo "11111" #输出11111


    3)tty        

        显示出连接到当前标准输入的终端设备文件名。
          -s, --silent, --quiet 什么也不显示,只返回退出状态值
          --help            显示此帮助信息并退出
          --version         显示版本信息并退出   

        示例:

           # tty   #显示当前终端


    4)startx

        启动图形化界面

        示例:

           # startx


    5)export       

        显示和设置环境变量值
          -f 带边环境变量为函数名称
             -n 删除指定的环境变量
          -p 列出所有的环境变量

        示例:          

           # export aaa      #加入环境变量

           # export -n aaa   #删除环境变量


    6)pwd

        print working directory       

        显示当前目录

           -L, --logical

              显示当前目录

           -P, --physical

              显示当前目录的实际物理地址

        示例:

           # pwd  #显示当前目录


    7)history       

        可以用来显示曾执行过的命令

        n 显示n个最近的记录

        -a 添加记录

        -r 读取记录,但不会添加内容记录

        -w 覆盖原有的history 文件

        -c 清除记录

        -d<编号>[n] 删除指定n条记录

        -n<文件> 读取指定文件

        -r<文件> 读取文件但不记录

        -w<文件> 覆盖原有文件 

        示例:

           # history    #查看所有执行过的命令


    8)shutdown

        以一种安全的方式关闭系统。所有登陆用户都可以看到关机信息提示。可以指定立刻关机,也可以指定系统在一定的延时后关机。      

        -a

            使用 /etc/shutdown.allow 来验证身份。

        -t sec

            通知 init(8) 在转换到其它运行级别前,发送警告 (warning) 信号后延时 (sec) 秒数后再发送关闭 (kill) 信号。

        -k

            并非真正关机,只向所有人显示警告信息。

        -r

            重启。

        -h

            停机。

        -n

            [DEPRECATED(不应再使用)] 不调用 init(8) 程序进行关机操作,而由自己进行。不建议用户使用这种关机方式,它的结果一般也不是你希望的那样。

        -f

            重启时跳过磁盘检测。

        -F

            重启时强制磁盘检测。

        -c

            取消运行中的 shutdown 进程。不可能为此选项指定 time 参数,但你可以在命令行输入一条解释消息来向所有用户说明。(一般的shutdown指令可以用按“+”号来进行中断)

        time

            关机时间。

        warning-message

            发送给所有用户的消息。

        示例:

           # shutdown –h now   #关机 

           # shutdown –h 23:00   #晚上11点关机

           # shutdown –r now   #重启

           

    9)poweroff          

        关闭计算机操作系统并且切断系统电源。 

        -n:关闭操作系统时不执行sync操作; 

        -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中; 

        -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录; 

        -f:强制关闭操作系统; 

        -i:关闭操作系统之前关闭所有的网络接口; 

        -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

        示例:

           # poweroff

        

    10)reboot

        重启系统

      -d  重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有"-n"参数的效果。

      -f  强制重新开机,不调用shutdown指令的功能。

      -i  在重开机之前,先关闭所有网络界面。

      -n  重开机之前不检查是否有未结束的程序。

        示例:

           # reboot


    11)hwclock

        设置或者显示硬件时间的近似值

        -s 以硬件为准

        -w 以系统为准

        示例:

           # hwclock        #显示硬件时间                 

   

    12)date

        根据指定格式显示当前时间或设置系统时间  

        -d, --date=STRING

            显示由 STRING 指定的时间, 而不是当前时间 

        -f, --file=DATEFILE

          显示 DATEFILE 中每一行指定的时间, 如同将 DATEFILE 中的每行作为 --date 的参数一样 

        -I, --iso-8601[=TIMESPEC] 按照 ISO-8601 的日期/时间格式输出时间. 

            TIMESPEC=`date' (或者不指定时)仅输出日期,等于 `hours', `minutes', 或`seconds'时按照指定精度输出日期及时间. 

        -r, --reference=FILE

            显示 FILE 的最后修改时间 

        -R, --rfc-822

            根据 RFC-822 指定格式输出日期 

        -s, --set=STRING

            根据 STRING 设置时间 

        -u, --utc, --universal

            显示或设置全球时间(格林威治时间) 

        格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。 分别解释如下:

        %%

            文本的 % 

        %a

            当前区域的星期几的简写 (Sun..Sat) 

        %A

            当前区域的星期几的全称 (不同长度) (Sunday..Saturday) 

        %b

            当前区域的月份的简写 (Jan..Dec) 

        %B

            当前区域的月份的全称(变长) (January..December) 

        %c

            当前区域的日期和时间 (Sat Nov 04 12:02:33 EST 1989) 

        %d

            (月份中的)几号(用两位表示) (01..31) 

        %D

            日期(按照 月/日期/年 格式显示) (mm/dd/yy) 

        %e

            (月份中的)几号(去零表示) ( 1..31) 

        %h

            同 %b 

        %H

            小时(按 24 小时制显示,用两位表示) (00..23) 

        %I

            小时(按 12 小时制显示,用两位表示) (01..12) 

        %j

            (一年中的)第几天(用三位表示) (001..366) 

        %k

            小时(按 24 小时制显示,去零显示) ( 0..23) 

        %l

            小时(按 12 小时制显示,去零表示) ( 1..12) 

        %m

            月份(用两位表示) (01..12) 

        %M

            分钟数(用两位表示) (00..59) 

        %n

            换行 

        %p

            当前时间是上午 AM 还是下午 PM 

        %r

            时间,按 12 小时制显示 (hh:mm:ss [A/P]M) 

        %s

            从 1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充) 

        %S

            秒数(用两位表示)(00..60) 

        %t

            水平方向的 tab 制表符 

        %T

            时间,按 24 小时制显示(hh:mm:ss) 

        %U

            (一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53) 

        %V

            (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52) 

        %w

            用数字表示星期几 (0..6); 0 代表星期天 

        %W

            (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53) 

        %x

            按照 (mm/dd/yy) 格式显示当前日期 

        %X

            按照 (%H:%M:%S) 格式显示当前时间 

        %y

            年的后两位数字 (00..99) 

        %Y

            年(用 4 位表示) (1970...) 

        %z

            按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充) 

        %Z

            时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空 

        示例:

            # date        #显示日期和时间

            # date -s '14:35:40'  #设置时间

         # date 080200092016.00    #设置时间为2016-08-02 00:09:00 


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

    内置命令:help COMMAND

        例如:help history

    外部命令:

        1).COMMAND --help

        2).手册,manual

    有章节之分,1-9

    man [#] COMMAND

        如何查看指定命令在哪些章节下有帮助:whatis COMMAND

        手册的段落:

    NAME:命令名称

    DESCRIPTION:命令功能的详细描述

    OPTIONS:所有选项

    SYNOPSIS:使用格式

    EXAMPLES:使用示例

    FILES:与当前命令相关的配置文件

            SEE ALSO:可参考的其他手册

        帮助中的格式字串:

    []:可省略

    <>:不可省略

    |:二选一或多选一

    ...:同类内容可以出现多个

        man的使用机制:

    翻屏:

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

        b:想文件首部翻一屏

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

        k:向文件首部翻一行

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

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

        字串搜索:

                /keyword:从文件首部向尾部进行搜索

                ?keyword:从文件尾部向首部进行搜索

            n:显示找到的下一个

            N:显示找到的上一个

        退出:q   

        man能够为除命令之外的配置文件、系统调用、库调用等都能提供帮助手册,他们分别位于不同的章节中

    ①.用户命令

    ②.系统调用

    ③.库调用

    ④.设备文件

    ⑤.配置文件

    ⑥.游戏

    ⑦.杂项

    ⑧.管理命令

        3).info命令:获取在线文档

        4).很多应用程序都自带有帮助文档 /usr/share/doc/


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

    FHS:

    /bin,/sbin:系统自身启动和运行时可能会用的核心二进制命令

    /lib,/lib64:共享库文件和内核模块

    /etc:配置文件

    /usr:大部分软件包的文件存放位置

    /usr/bin,/usr/sbin:系统运行中,用户为完成某些操作可能用到的命令

    /usr/lib,/usr/lib64:库文件

    /usr/share/man,/usr/share/doc 帮助文件

    /dev:所有的设备文件,设备文件通常也称为特殊文件(仅有元数据,而没有数据)

    /proc:伪文件系统,内核和进程信息的虚拟文件系统接口

    /sys:伪文件系统,硬件设备信息的虚拟文件系统接口

    /boot:系统引导加载时用到的静态文件

        内核和ramdisk

        grub(bootloader)

    /home/USERNAME:家目录

    /srv:服务所用到的数据

    /tmp:临时文件存储位置

    /media:移动设备默认挂载点

    /mnt:临时挂载点

    /root:root用户家目录

    /var:系统运行要改变的数据

        cache:应用程序缓存数据目录

        lib:应用程序状态信息数据

        local:专用于为/usr/local下的应用程序存储可变数据

        lock:锁文件

        log:日志目录和文件

        opt:专用于为/opt下的应用程序存储可变数据

        run:运行中的进程相关数据,通常用于存储进程的pid文件

        spool:应用程序数据池

        tmp:保存系统两次重启之间产生的临时数据

    /opt:第三方应用程序的安装目录