第一周配套作业

第1题 描述计算机的组成及其功能
计算机组成CPU(控制器+运算器)、I/O总线、存储器(内存+硬盘)、输入输出系统组成。
1.控制器(Control):对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
2.运算器(Datapath):对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
3.I/O总线:各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。
4.存储器(Memory):存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
5. 输入(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
6. 输出(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

第2题 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
目前Linux的主流发行版主要分为以下三类:
1.Slackware
2.Debian
3.RedHat
三者都是基于Linux内核由不同的发行商发行版本。
Slackware由商业公司进行维护的发行版,设计哲学——KISS,尽量保持系统的简洁,保持着文本界面的系统安装程序,保持着文本界面的系统设置工具,一定程度上牺牲了易用性。Slackware知名的二次发行版是SUSE Linux,SUSE在欧洲拥有大量用户。

Debian是三大主流Linux发行版中以社区组织维护的发行版,是迄今为止最遵循GNU规范的Linux系统,Debian最具特色的是apt-get /dpkg包管理方式,在Debian的实际发展包含三个主要分支(如把 “experimental”算在内的话是四个分支):”unstable” (或者称之为 “sid”), “testing” 和 “stable”。Debian知名的二次发行版是Ubuntu,Ubuntu是基于Debian的unstable版本加强而来,Ubuntu的安装及使用非常的人性化,采用自行加强的内核(kernel),安全性方面更高。Ubuntu的版本周期为六个月,弥补了Debian更新缓慢的不足。

RedHat是由红帽公司进行维护的发行版,RedHat应用范围广,具有典型性和代表性的Linux。RedHat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。RHEL主要面向企业级应用,稳定性非常好,适合于服务器使用,提供有偿服务和技术支持。但是更新较慢,每18个月发行一个新版本。CentOS是通过RHEL源码进行重新编译而成。CentOS 可以得到 RHEL 的所有功能,甚至是更好的软件。但 CentOS兼容rhel的格式, 并不向用户提供商业支持,也不负上任何商业责任。安全漏洞的修正和软件包的升级对应RHEL,有数日数星期数个月的延迟情况。Fedora Core主要面向桌面应用,定位为新技术的实验场地,许多新的技术都会在 FC 中检验,如果稳定的话红帽公司则会考虑加入RHEL中。版本更新周期也非常短,仅6个月。由于版本更新频繁,性能和稳定性得不到保证,因此,一般在服务器上不推荐采用Fedora Core。

第3题 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
Linux的哲学思想:
1.一切皆文件
(将计算机资源通过文件形式进行组织管理)
2.由众多单一目的小程序组成
(系统设计以简洁为出发点,应用程序设计为功能单一的小程序,保证程序运行效率,对于复杂任务通过小程序组成完成)
3.尽量避免跟用户交互
(以功能单一的小程序为基础,用户可以根据自己的需求,通过编写脚本程序调用其他的小程序,自动完成自己需要的操作作业)
4.使用纯文本文件保存配置信息
(用户可以通过任意一款文本编程器对操作系统、应用程序的配置文件进行修改,快速的完成系统及软件配置工作)

第4题 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
Linux系统上的命名格式
#COMMAND [OPTIONS...] [ARGUMENTS...]
OPTIONS:命令选项,用于启用或关闭命令的某个或某些功能
ARGUMENTS:命令参数,为命令的作用对象

【ifconfig】
1.命令格式:ifconfig [网络设备] [参数]

2.命令功能:ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

3.命令参数:
    up 启动指定网络设备/网卡。
    down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
    arp 设置指定网卡是否支持ARP协议。
    -promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
    -allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
    -a 显示全部接口信息
    -s 显示摘要信息(类似于 netstat -i)
    add 给指定网卡配置IPv6地址
    del 删除指定网卡的IPv6地址
    <硬件地址> 配置网卡最大的传输单元 mtu<字节数> 设置网卡的最大传输单元 (bytes)
    netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。
    tunel 建立隧道
    dstaddr 设定一个远端地址,建立点对点通信
    -broadcast<地址> 为指定网卡设置广播协议
    -pointtopoint<地址> 为网卡设置点对点通讯协议
    multicast 为网卡设置组播标志
    address 为网卡设置IPv4地址
    txqueuelen<长度> 为网卡设置传输列队的长度

4.常用举例
实例1:显示网络设备信息(激活状态的)
    ifconfig

实例2:启动关闭指定网卡
    ifconfig eth0 up
    ifconfig eth0 down

实例3:配置IP地址
    ifconfig eth0 192.168.2.56 netmask 255.255.255.0

实例4:启用和关闭ARP协议
    ifconfig eth0 arp
    ifconfig eth0 -arp

实例5:设置最大传输单元
    ifconfig eth0 mtu 150

【echo】
1.命令格式:echo [选项][参数]或 echo [--help][--version]

2.命令功能:是在显示器上显示一段文字,一般起到一个提示的作用。

3.命令选项:
   -n 不要在最后自动换行
   -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
        \\ 反斜线
        \a 发出警告声;
        \b 删除前一个字符;
        \c 最后不加上换行符号;
        \f 换行但光标仍旧停留在原来的位置;
        \n 换行且光标移至行首;
        \r 回车;
        \t 水平制表;
        \v 垂直制表;
        \ 插入字符;nnn 插入nnn(八进制)所代表的ASCII字符;
    --help 显示帮助
    --version 显示版本信息

4.常用举例
实例1:输入一行文本并显示在标准输出上
    #echo Tecmintis a community of LinuxNerds
    Tecmintis a community of LinuxNerds

实例2:输出一个声明的变量值
    #x=10
    #echo The value of variable x = $x
    The value of variable x =10

实例3:使用‘\b‘选项
    #echo -e "Tecmint \bis \ba \bcommunity \bof \bLinux \bNerds"
    TecmintisacommunityofLinuxNerds

实例4:使用‘\n‘选项

    #echo -e "Tecmint \nis \na \ncommunity \nof \nLinux \nNerds"
    Tecmint
    is
    a
    community
    of
    Linux
    Nerds

实例5:使用‘\t‘选项
    #echo -e "Tecmint \tis \ta \tcommunity \tof \tLinux \tNerds"
    Tecmintis a community of Linux Nerds

实例6:使用‘\v‘选项
    #echo -e "\vTecmint \vis \va \vcommunity \vof \vLinux \vNerds"
    Tecmint
    is
    a
    community
    of
    Linux
    Nerds

【tty】
1.命令格式:tty [-s][--help][--version]

2.命令功能:显示终端机连接标准输入设备的文件名称。在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。

3.命令选项:

    -s或--silent或--quiet 不显示任何信息,只回传状态代码。
    --help 在线帮助。
    --version 显示版本信息。
    
    返回的状态码:

        0 表示标准输入是一个终端。
        1 表示标准输入不是一个终端。
        2 表示给定的参数是不正确的参数。
        3 表示发生了写错误。

4.常用举例
实例1:显示当前终端
    #tty
    /dev/pts/0

实例2:运行tty什么也不输出,然后查看其退出码
    #tty -s
    #echo $?
    0

实例3:向指定终端发送信息
    ## echo hello >/dev/pts/1
    打开"/dev/pts/1"对应的终端,就会发现刚才发送的hello
    tty#或伪终端/dev/pts/#是代表linux的纯命令行终端,而写到这个终端的字符串只是做为这个终端的输出,不会当做终端的输入处理。
    
【startx】
1.命令格式:startx [ -d Display:0 ] [ -t | -w ] [ -x Startup | [ -r Resources ] [ -m Window_Manager ] ] [ -wait ]

2.命令功能:初始化一个 X 会话。

3.命令选项:

    -d Display :0 指定在启动过程中传递给 X 客户机的 X 服务器的显示名称。
    -m Window_Manager 当未找到 startup 脚本时,启动窗口管理器。
    -r Resources 当未找到 startup 脚本时,装入资源文件。
    -t 为一个 X 终端启动 X 客户机。
    -w 为工作站上的 X 窗口会话启动 X 服务器和 X 客户机。
    -wait 当 xdm 命令调用 startx 时,防止重新启动 X 会话。
    -x Startup 使用 startup 脚本启动 X 窗口会话。。

4.常用举例
实例1:要在工作站上或 X 终端上启动 X 会话
    startx

实例2:要在工作站上强制启动 X 会话
    startx -w

实例3:要为 X 终端启动 X 会话,并注销用户的 Telnet 会话
    startx; kill -9 $$

实例4:要使用 .xinitrc 脚本启动 X 会话
    startx -x .xinitrc

实例5:要使用 mwm 窗口管理器启动 X 会话
    startx -m mwm


【export】
1.命令格式:export [-fnp][变量名称]=[变量设置值]

2.命令功能:设置或显示环境变量

3.命令选项:

    -f  代表[变量名称]中为函数名称。
    -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    -p  列出所有的shell赋予程序的环境变量。

4.常用举例
实例1:列出当前所有的环境变量
    # export -p
    declare -x CVS_RSH="ssh"
    declare -x G_BROKEN_FILENAMES="1"
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="STCO6"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"
    declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
    declare -x MAIL="/var/spool/mail/root"
    declare -x OLDPWD
    declare -x PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
    declare -x PWD="/root"
    declare -x QTDIR="/usr/lib64/qt-3.3"
    declare -x QTINC="/usr/lib64/qt-3.3/include"
    declare -x QTLIB="/usr/lib64/qt-3.3/lib"
    declare -x SELINUX_LEVEL_REQUESTED=""
    declare -x SELINUX_ROLE_REQUESTED=""
    declare -x SELINUX_USE_CURRENT_RANGE=""
    declare -x SHELL="/bin/bash"
    declare -x SHLVL="1"
    declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
    declare -x SSH_CLIENT="192.168.2.11 56445 22"
    declare -x SSH_CONNECTION="192.168.2.11 56445 192.168.2.30 22"
    declare -x SSH_TTY="/dev/pts/0"
    declare -x TERM="xterm"
    declare -x USER="root"

实例2:定义环境变量
    # export MYENV
    # export -p
    declare -x CVS_RSH="ssh"
    declare -x G_BROKEN_FILENAMES="1"
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="STCO6"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"
    declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
    declare -x MAIL="/var/spool/mail/root"
    declare -x MYENV
    declare -x OLDPWD
    declare -x PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
    declare -x PWD="/root"
    declare -x QTDIR="/usr/lib64/qt-3.3"
    declare -x QTINC="/usr/lib64/qt-3.3/include"
    declare -x QTLIB="/usr/lib64/qt-3.3/lib"
    declare -x SELINUX_LEVEL_REQUESTED=""
    declare -x SELINUX_ROLE_REQUESTED=""
    declare -x SELINUX_USE_CURRENT_RANGE=""
    declare -x SHELL="/bin/bash"
    declare -x SHLVL="1"
    declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
    declare -x SSH_CLIENT="192.168.2.11 56445 22"
    declare -x SSH_CONNECTION="192.168.2.11 56445 192.168.2.30 22"
    declare -x SSH_TTY="/dev/pts/0"
    declare -x TERM="xterm"
    declare -x USER="root"


实例3:定义环境变量赋值
    # export MYENV=7
    # export -p
    declare -x CVS_RSH="ssh"
    declare -x G_BROKEN_FILENAMES="1"
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="STCO6"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"
    declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
    declare -x MAIL="/var/spool/mail/root"
    declare -x MYENV="7"
    declare -x OLDPWD
    declare -x PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
    declare -x PWD="/root"
    declare -x QTDIR="/usr/lib64/qt-3.3"
    declare -x QTINC="/usr/lib64/qt-3.3/include"
    declare -x QTLIB="/usr/lib64/qt-3.3/lib"
    declare -x SELINUX_LEVEL_REQUESTED=""
    declare -x SELINUX_ROLE_REQUESTED=""
    declare -x SELINUX_USE_CURRENT_RANGE=""
    declare -x SHELL="/bin/bash"
    declare -x SHLVL="1"
    declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
    declare -x SSH_CLIENT="192.168.2.11 56445 22"
    declare -x SSH_CONNECTION="192.168.2.11 56445 192.168.2.30 22"
    declare -x SSH_TTY="/dev/pts/0"
    declare -x TERM="xterm"
    declare -x USER="root"

【pwd】
1.命令格式:pwd [OPTION]

2.命令功能:查看”当前工作目录“的完整路径

3.命令选项:

    -P  显示出实际路径,而非使用连接(link)路径

4.常用举例
实例1:用 pwd 命令查看默认工作目录的完整路径
    # pwd
    /root

实例2:显示当前目录的物理路径
    # cd /etc/init.d
    # pwd -P
    /etc/rc.d/init.d

实例3:要显示当前目录的连接路径
    # cd /etc/init.d
    # pwd -L
    /etc/init.d

【history】
1.命令格式:
    history [-c] [-d offset]
    history -anrw [filename]
    history -ps arg [arg...]

2.命令功能:用于显示历史指令记录内容, 下达历史纪录中的指令 。

3.命令选项:

    -c: 清空命令历史
    -d: 删除历史中指定的命令;
    #: 显示最近的#条历史
    -a: 追加本次会话新执行的命令历史列表至历史文件
    -n: 读历史文件中未读过的行到历史列表
    -r: 读历史文件附加到历史列表
    -w: 保存历史列表到指定的历史文件
    -p: 展开历史参数成多个行,但不存在历史列表中
    -s: 展开历史参数成一行,附加在历史列表后

4.常用举例
实例1:使用history命令显示最近使用的10条历史命令
    # history 10
   21  man pwd
   22  pwd -P
   23  man pwd
   24  cd /etc/rc.d/init.d/
   25  pwd -L
   26  vi /etc/sysconfig/network-scripts/ifcfg-eth0
   27  history
   28  history -p
   29  history -P
   30  history 10


实例2:使用命令记录号码执行命令,执行历史清单中的第10条命令
    # !10
    /init 0

实例3:重复执行上一个命令
    # !!


【shutdown】
1.命令格式:shutdown [-efFhknr][-t 秒数][时间][警告信息]

2.命令功能:可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。精确时间的格式是hh:mm,表示小时和分钟,时间段由+ 和分钟数表示。系统执行该命令后会自动进行数据同步的工作。

3.命令选项:

    -c  当执行"shutdown -h 11:50"指令时,只要按+键就可以中断关机的指令。
    -f  重新启动时不执行fsck。
    -F  重新启动时执行fsck。
    -h  将系统关机。
    -k  只是送出信息给所有用户,但不会实际关机。
    -n  不调用init程序进行关机,而由shutdown自己进行。
    -r  shutdown之后重新启动。
    -t<秒数>  送出警告信息和删除信息之间要延迟多少秒。
    [时间]  设置多久时间后执行shutdown指令。
    [警告信息]  要传送给所有登入用户的信息。

4.常用举例
实例1:马上关闭Linux系统
    # shutdown -h now

实例2:系统10分钟后重新启动
    # shutdown -r +10
    /init 0

实例3:设置系统在那个时间点关机
    # shutdown -h 12:30

【poweroff】
1.命令格式:poweroff[选项]

2.命令功能:用来关闭计算机操作系统并且切断系统电源。

3.命令选项:

    -n:关闭操作系统时不执行sync操作
    -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中
    -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录
    -f:强制关闭操作系统
    -i:关闭操作系统之前关闭所有的网络接口
    -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

4.常用举例
实例1:如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统

    # poweroff

【reboot】
1.命令格式:reboot[选项]

2.命令功能:用来重新启动正在运行的Linux操作系统。

3.命令选项:

    -d:重新开机时不把数据写入记录文件/var/tmp/wtmp。
    -f:强制重新开机,不调用shutdown指令的功能
    -i:在重开机之前,先关闭所有网络界面
    -n:重开机之前不检查是否有未结束的程序
    -w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。


4.常用举例
实例1:系统重启
    # reboot
实例2:做个重开机的模拟(只有纪录并不会真的重开机)
    # reboot -w

【hwclock】
1.命令格式:hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test][--utc][--version][--set --date=<日期与时间>]

2.命令功能:显示与设定硬件时钟。

3.命令选项:

    -r, --show    读取并打印硬件时钟(read hardware clock and print result )
    -s, --hctosys    将硬件时钟同步到系统时钟(set the system time from the hardware clock )
    -w, --systohc    将系统时钟同步到硬件时钟(set the hardware clock to the current system time )
    --adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
    --debug  显示hwclock执行时详细的信息。
    --directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
    --hctosys  将系统时钟调整为与目前的硬件时钟一致。
    --set --date=<日期与时间>  设定硬件时钟。
    --show  显示硬件时钟的时间与日期。
    --systohc  将硬件时钟调整为与目前的系统时钟一致。
    --test  仅测试程序,而不会实际更改硬件时钟。
    --utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
    --version  显示版本信息。


4.常用举例
实例1:显示硬件时钟
    # hwclock
    # hwclock –r
    # hwclock --show
    
实例2:系统时间同步到硬件时间
    # hwclock -w
    
【date】
1.命令格式:date [选项]... [+格式]

2.命令功能:显示与设定硬件时钟。

3.命令选项:

    时间方面 :
    % : 印出 %
    %n : 下一行
    %t : 跳格
    %H : 小时(00..23)
    %I : 小时(01..12)
    %k : 小时(0..23)
    %l : 小时(1..12)
    %M : 分钟(00..59)
    %p : 显示本地 AM 或 PM
    %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
    %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
    %S : 秒(00..61)
    %T : 直接显示时间 (24 小时制)
    %X : 相当于 %H:%M:%S
    %Z : 显示时区
    日期方面 :
    %a : 星期几 (Sun..Sat)
    %A : 星期几 (Sunday..Saturday)
    %b : 月份 (Jan..Dec)
    %B : 月份 (January..December)
    %c : 直接显示日期与时间
    %d : 日 (01..31)
    %D : 直接显示日期 (mm/dd/yy)
    %h : 同 %b
    %j : 一年中的第几天 (001..366)
    %m : 月份 (01..12)
    %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
    %w : 一周中的第几天 (0..6)
    %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
    %x : 直接显示日期 (mm/dd/yy)
    %y : 年份的最后两位数字 (00.99)
    %Y : 完整年份 (0000..9999)
    若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
    参数 :
    -d datestr : 显示 datestr 中所设定的时间 (非系统时间)
    --help : 显示辅助讯息
    -s datestr : 将系统时间设为 datestr 中所设定的时间
    -u : 显示目前的格林威治时间
    --version : 显示版本编号


4.常用举例
实例1:显示时间后跳行,再显示目前日期
    # date '+%T%n%D'
    18:11:43
    08/05/16

实例2:显示月份与日数
    # date '+%B %d'
    August 05

    
第5题 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
1.内部命令获取帮助
# help 命令名称
2.外部命令获取帮助
(1)# 命令名称 --help
(2)# 命令名称 -h
(3)使用手册(manual) # man 命令名称
(4)信息页 # info 命令名称
(5)程序自身的帮助文档(README、INSTALL、ChangeLog)

3.man文件章节划分
man1: 用户命令
man2: 系统调用
man3: C库调用
man4: 设备文件及特殊文件
man5: 配置文件格式
man6: 游戏
man7: 杂项
man8: 管理类的命令
man9:内核
man10:最新

第6题 请罗列Linux发行版的基础目录名称命名法则及功用规定
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录;
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;
/lib:基本共享库文件,以及内核模块文件(/lib/modules);
/lib64:专用于x86_64系统上的辅助共享库文件存放位置;
/etc:配置文件目录(纯文本文件);
/home/USERNAME:普通用户家目录;
/root:管理员的家目录;
/media:便携式移动设备挂载点;
/mnt:临时文件系统挂载点;
/dev:设备文件及特殊文件存储位置;
/opt:第三方应用程序的安装位置;
/srv:系统上运行的服务用到的数据;
/tmp:临时文件存储位置;
/usr:系统存放程序的目录,比如命令、帮助文件等。
            bin: 保证系统拥有完整功能而提供的应用程序;
            sbin: 根文件系统不必要的系统管理命令,例如多数服务程序。
            lib:应用程序库文件,程序或子系统的不变的数据文件
            lib64:专用于x86_64系统上应用程序库文件,程序或子系统的不变的数据文件
            include: C程序的头文件(header files);
            share:结构化独立的数据,例如doc, man等;
            local:第三方应用程序的安装位置;
                bin, sbin, lib, lib64, etc, share

/var: 动态数据。这个目录的内容是经常变动的
            cache: 应用程序缓存数据目录;
            lib: 应用程序状态信息数据;
            local:专用于为/usr/local下的应用程序存储可变数据;
            lock: 锁文件
            log: 日志目录及文件;
            opt: 专用于为/opt下的应用程序存储可变数据;
            run: 运行中的进程相关的数据;通常用于存储进程的pid文件;
            spool: 应用程序数据池;
            tmp: 保存系统两次重启之间产生的临时数据;

/proc: 用于输出内核与进程信息相关的虚拟文件系统;
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置。