本周作业内容:

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

        运算器、控制器、存储器、输入设备、输出设备

            CPU

            bus:总线

            memory: 编址存储设备


            read ahead


        IO: 与外部部件交互

            磁盘:

            网卡:    



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

        Linux的发行版:

        slackware:

            suse

                opensuse

        debian:

            ubuntu

                mint

        redhat:

            rhel: redhat enterprise linux

                每18个月发行一个新版本

            CentOS:兼容rhel的格式

            fedora:每6个月发行一个新版本


        ArchLinux

        Gentoo

        LFS: Linux From scratch


        Android: kernel+busybox+java虚拟机



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

        1、一切皆文件;

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

        2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;

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

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

            目标:实现脚本编程,以自动完成某些功能;

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

            目标:一款使用的文本编程器即能完成系统配置工作;


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

    ifconfig (显示或者配置网络设备)

[网络设备] 网络设备的名称。

down 关闭指定的网络设备。

up 启动指定的网络设备。

-arp 打开或关闭指定接口上使用的ARP协议。前面加上一个负号用于关闭该选项。

-allmuti 关闭或启动指定接口的无区别模式。前面加上一个负号用于关闭该选项。

-promisc 关闭或启动指定网络设备的promiscuous模式。前面加上一个负号用于关闭该选项。

add<地址> 设置网络设备IPv6的IP地址。

del<地址> 删除网络设备IPv6的IP地址。

media<网络媒介类型> 设置网络设备的媒介类型。

mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。

metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。

mtu<字节> 设置网络设备的MTU。

netmask<子网掩码> 设置网络设备的子网掩码。

tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。

-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。

-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。

    实例:

    //显示网络设备

    $ ifconfig  

    tty 显示终端机连接标准输入设备的文件名称

        tty [-s][--help][--version]

        -s或--silent或--quiet 不显示任何信息,只回传状态代码。

              --help 在线帮助。


              --version 显示版本信息。

        实例:

             $ tty

        /dev/pts/4

  startx 启动X Window的服务

        实例:

            startx 切换到图像界面

    export

        export[-fnp][变量名称]=[变量设置值]

        -f  代表[变量名称]中为函数名称。

              -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。


              -p  列出所有的shell赋予程序的环境变量。

        实例:

              export -p //列出当前的环境变量值
              export MYENV //定义环境变量

        export MYENV=7 //定义环境变量并赋值

  history 显示历史指令记录

        history [-raw] histfiles

                    n  :数字,要列出最近的 n 笔命令列表
                    -c :将目前的shell中的所有 history 内容全部消除
                    -a :将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles,则预设写入 ~/.bash_history
                    -r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中
                    -w :将目前的 history 记忆内容写入 histfiles。

               实例:

                    history 10 只列出最近10条记录

                    history -c 立即清空history当前所有历史命令的记录

            

    date(时间,日期)

        date [OPTION]... [+FORMAT]:显示

            FORMAT:格式符号

                %D

                %F

                %T

        实例:

                $ date +%D

                08/07/16

                $ date +%F

                2016-08-07

                $ date +%H

                20

                $ date +%T

                20:13:39

                $ date "+%F %T"

                2016-08-07 20:14:16

        date [MMDDhhmm[[CC]YY][.ss]]:设置

            MM:月

            DD:几号

            hh:小时

            mm:分钟

            YY:两位年份

            CCYY:四位年份

            .ss:秒钟

        实例:

            date 0805110916.32

            2016年 08月 05日 星期五 11:09:32 CST

        

            hwclock:显示硬件时钟

                -s:--hctosys 将系统时钟调整为与的硬件时钟一致

                -w:--systohc 将硬件时钟调整为与的系统时钟一致。

            

             pwd 显示当前目录

                实例:

                $ pwd

                /home/centos

         shutdown

            shutdown [-t seconds] [-rkhncfF] time [message] 关机

                参数 :

                    -t seconds : 设定在几秒钟之后进行关机程序

                    -k : 并不会真的关机,只是将警告讯息传送给所有使用者

                    -r : 关机后重新开机

                    -h : 关机后停机

                    -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机

                    -a : 取消目前已经进行中的关机动作

                    -f : 关机时,不做 fcsk 动作(检查 Linux 档系统)

                    -F : 关机时,强迫进行 fsck 动作

                    time : 设定关机的时间

                    message : 传送给所有使用者的警告讯息


         poweroff  关机

            poweroff是halt额软链接而已

            

                    -n : 在关机前不做将记忆体资料写回硬盘的动作
                    -w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
                    -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) - f : 强迫关机,不呼叫 shutdown 这个指令   

                    -i : 在关机之前先把所有网络相关的装置先停止 

                     -p : 当关机的时候,顺便做关闭电源(poweroff)的动作

             

         reboot 重启

                -n : 在重开机前不做将记忆体资料写回硬盘的动作
                -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
                -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
                -f : 强迫重开机 ,不呼叫 shutdown 这个指令

            -i : 在重开机之前先把所有网络相关的装置先停止


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

 内部命令帮助:

  # help COMMAND

   hash命令:

    shell搜寻到的外部命令的路径结果会缓存至kv(key-value)存储中;

   history命令:

    作用是什么?相关的环境变量是什么?有用的选项?

    管理命令历史;

     登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history

     登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中;

     history:

      -a: 追加本次会话新执行的命令历史列表至历史文件中;

      -d: 删除历史中指定的命令;

      -c: 清空命令历史;

    快捷操作:

     !#: 调用历史中第#条命令;

     !string:调用历史中最近一个以string开头的命令;

     !!: 上一条命令

 外部命令帮助获取:

  (2) man COMMAND

   手册页:/usr/share/man

    man1 ... man8

     man1: 用户命令

     man2: 系统调用

     man3: C库调用

     man4: 设备文件及特殊文件

     man5: 配置文件格式

     man6: 游戏

     man7: 杂项

     man8: 管理类的命令

   注意:有些关键在不止一个章节中存在帮助手册;

    要查看指定章节中的手册:man # COMMAND

   man命令的配置文件:/etc/man.config

    MANPATH /PATH/TO/SOMEWHERE: 指明新的手册文件搜索位置

    # man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示之;

   帮助手册中的段落说明:

    NAME

    SYNOPSIS

    DESCRIPTION

    OPTIONS

    EXAMPLES

    AUTHOR

    REPORTING BUGS

    SEE ALSO

   SYNOPSIS:

    []:可选内容

    <>: 必选内容

    a|b:二选一

    ...: 同一内容可出现多次

   man命令的操作方法:

    Space, ^V, ^f, ^F: 向文件尾翻屏;

    b, ^B: 向文件首部翻屏;

    d, ^D: 向文件尾部翻半屏;

    u, ^U: 向文件首部翻半屏;

    RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;

    y or ^Y or ^P or k or ^K:向文件首部翻一行;

    q: 退出;

    #:跳转至第#行;

    1G: 回到文件首部

    G:翻至文件尾部



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


        /boot:引导文件存放目录,内核文件(vnlinuz),引导加载器(bootloader,grub)都存放此目录;

        /bin:供所有yoghurt使用的基本命令;不能独立分区,os启动即会用的程序;

        /sbin:管理类的基本命令;不能独立分区,os启动即会用的程序;

        /lib:基本共享库文件,以及内核模块文件(/lib/modules);

        /lib64:专用X86_64系统上的辅助共享库文件存放位置;

        /etc:配置文件目录

        /home:家目录

        /root:管理员的家目录

        /media:便携式移动设备挂载点

        /mnt:临时文件系统挂载点

        /dev:设备文件及特殊文件存储位置

                b:block device 随机访问

                c:character device 线性访问

        /opt:第三方程序

        /srv:系统上运行的服务用到的数据;

        /tmp:临时文件

        /usr:universal shared, read-only data;

            bin:保证系统拥有完整功能而提供的应用程序;

            sbin:

            lib:

            lib64:

            include:C程序的头文件(header )

            share:结构化独立的数据,例如doc,man等;

            local:第三方应用程序安装位置;

                bin, sbin, lib, lib64, etc, share

        /var:可变文件

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

            lib:可变状态信息

            local:第三方可变数据

            lock:锁文件

            log:日志文件

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

            run:与运行程序相关的数据;存放进程的pid文件

            spool:程序的缓冲池

            tmp:系统重启过程的临时文件

            mail:邮箱

        /proc:用于输出内核与进程信息相关的虚拟文件系统

        /sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;

        /selinux:linux安全增强机制  


        命名规范

1、Linux 系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。

2、除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux 命令也使用小写字符。       

3、Linux 系统下的文件名长度最多可到256个字符。

通常情况下,文件名的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。

4、不建议使用含有特殊意义的字符

Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义)在Linux 的 shell 中有特殊的含义。这样的转意字符有:"?"(问号),"*"(星号), " "(空格), "$"(货币符), "&", 扩号等等。在文件名中应尽量避免使用这些字符。

文件名中可以有" "(空格),但建议用户用"_"(下划线)来替代。

"/" 既可代表目录树的根也可作为路径名中的分隔符,因此"/"不能出现在文件名中。

"." 和 ".." 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。

      在Linux下可以使用长文件名和目录名,可以给它们取任何名字,但是必须遵守以下规则:
1、除了/外,所有的字符都可以;
2、有些字符最好不用,如空格符,制表符,退格符和字符:? @ # $&()\|; ‘’“”<>等;
3、避免使用+ -或.作为普通文件名的第一个字符(在Linux下以.开头的文件是属于隐藏文件);
4、在Linux下文件名大小写敏感。