magedu pro 第一周作业

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

计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成。

  1. 运算器:运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
  2. 存储器:主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。
  3. 控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
  4. 输入设备:用来向计算机输入各种原始数据和程序的设备叫输入设备。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
  5. 输出设备:从计算机输出各类数据的设备叫做输出设备。常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

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

Linux的主流发行版本分为:slackwaredebianredhat

其中很多发行商通过以上三个版本的开源代码进行二次开发甚至于三次开发,得出的主流版本结构图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|slackware 
|suse
|sles:suse的企业级发行版。
|opensuse:suse的开源发行版,以界面华丽著称。

|debian:唯一一个由社区组织维护的发行版。
|ubuntu:debian的二次发行版,也是迄今为止最能被用户接受的linux桌面系统。
|mint:ubuntu的二次发行版,debian的三次发行版,有多种桌面版本供用户选择。
|knopix:以安全著称的debian二次发行版。
|deepinos:由深之度(深度)公司开发的一款切合国人使用习惯的桌面linux系统,起先基于ubuntu,现基于debian。

|redhat
|rhel:redhat的企业版。
|fedora:redhat的社区维护版,目的用于测试最新的软件和驱动。
|centos:由redhat开源代码用完全兼容rhel的格式重新编译而成,后被redhat招安,成为官方开源版本。

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

  • 一切皆文件。
    在Linux,几乎所有的系统资源,都以文件形式表示,包括硬件设备,甚至通信端口。
    比如网卡,外接存储,键盘等外接设备,都是通过文件接口来实现访问,也都以文件形式存在于Linux系统中。
    每个命令的本身,也是一个可执行的程序文件。

  • 由众多功能单一的程序组成。
    Linux中很少出现实现复杂功能的程序,每个功能的实现,都可由众多功能单一的程序进行组合实现,比如ls|grep linuxls负责列出资源,grep负责筛选。一个程序只做一件事,并且做好。

  • 尽量避免跟用户交互。
    CLI(command-line interface)是Linux最为吸引人的地方,也被称为命令行接口。既然是命令行,要保持高效率执行,肯定是越少的交互就越好,因为“This is an order!”。

  • 使用文本文件保存配置信息。
    使用文本文件保存配置,而不是用二进制或其他特殊格式。使用文本文件保存配置的好处,在于可以使用任何文本编辑器更改配置,而无须通过特定程序,这意味着我们可以更加方便地去控制系统和程序,而无需通过GUI

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

  • ifconfig用于查看当前网络信息,获取IP地址及网卡相关信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [hzz@e25f88eebde1 ~]$ ifconfig -a
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
    inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20<link>
    ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 8 bytes 648 (648.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 0 (Local Loopback)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [hzz@e25f88eebde1 ~]$
  • echo用于输出指定内容,可使用-e参数输出特定格式,具体支持的格式可通过man echo查看

    1
    2
    3
    4
    5
    6
    7
    8

    [hzz@e25f88eebde1 ~]$ echo 123
    123
    [hzz@e25f88eebde1 ~]$ echo -e "\n123\n"

    123

    [hzz@e25f88eebde1 ~]$
  • tty用于显示当前连接的终端类型

    1
    2
    3
    [hzz@e25f88eebde1 ~]$ tty
    /dev/console
    [hzz@e25f88eebde1 ~]$
  • startx用于启动gnome桌面

  • export用于设定系统变量

    1
    2
    3
    4
    [hzz@e25f88eebde1 ~]$ export hzz=handsomeBoy
    [hzz@e25f88eebde1 ~]$ echo $hzz
    handsomeBoy
    [hzz@e25f88eebde1 ~]$
  • pwd用于显示当前位置的绝对路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # -L 显示逻辑路径,默认
    # -P 显示物理路径

    [hzz@e25f88eebde1 ~]$ ln -s /usr/local local
    [hzz@e25f88eebde1 ~]$ cd local/
    [hzz@e25f88eebde1 local]$ pwd -L
    /home/hzz/local
    [hzz@e25f88eebde1 local]$ pwd -P
    /usr/local
    [hzz@e25f88eebde1 local]$
  • history用于显示历史命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # -c 用于清空历史命令
    # -n 显示历史记录中的第几行命令
    # 还可以通过以下系统变量来控制历史命令的记录:
    # HISTCONTROL=ignoredups; # 忽略连续重复的命令
    # HISTCONTROL=ignorespace; # 忽略以空格开头的命令
    # HISTCONTROL=ignoreboth; # 上述两者都生效
    # 更多功能可通过man history查看

    [hzz@VM_203_97_centos ~]$ history -c
    [hzz@VM_203_97_centos ~]$ export HISTCONTROL=ignoreboth
    [hzz@VM_203_97_centos ~]$ ls # 此命令不记录
    test.sh
    [hzz@VM_203_97_centos ~]$ echo 111
    111
    [hzz@VM_203_97_centos ~]$ echo 111 # 此重复命令不记录
    111
    [hzz@VM_203_97_centos ~]$ history
    1 2016-12-08 22:30:50 export HISTCONTROL=ignoreboth
    2 2016-12-08 22:31:05 echo 111
    3 2016-12-08 22:31:10 history
    [hzz@VM_203_97_centos ~]$
  • shutdown关机命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # -h 关机
    # -r 重启
    # -s 睡眠
    # -c 取消
    # 后面跟时间设置倒计时

    [hzz@VM_203_97_centos ~]$ sudo shutdown -h 10
    [sudo] password for hzz:
    Shutdown scheduled for 日 2016-12-11 18:23:10 CST, use 'shutdown -c' to cancel.
    [hzz@VM_203_97_centos ~]$
    Broadcast message from root@VM_203_97_centos (Sun 2016-12-11 18:13:10 CST):

    The system is going down for power-off at Sun 2016-12-11 18:23:10 CST!


    [hzz@VM_203_97_centos ~]$ sudo shutdown -c

    Broadcast message from root@VM_203_97_centos (Sun 2016-12-11 18:13:20 CST):

    The system shutdown has been cancelled at Sun 2016-12-11 18:14:20 CST!

    [hzz@VM_203_97_centos ~]$
  • poweroff是关机命令

    1
    2
    # root直接执行即可关机
    # -f 强制关机
  • reboot是重启命令

    1
    2
    # root直接执行即可重启
    # 用法和poweroff相似
  • hwclock查看及设置硬件时钟

    1
    2
    # -s 从硬件时钟设置系统时间
    # -w 从当前系统时间设置硬件时钟
  • date用于查看及设置系统时钟

    1
    2
    3
    4
    5
    6
    7
    # 一般用于格式化时间输出,如:

    [hzz@e25f88eebde1 ~]$ date +%Y-%m-%d-%H-%M-%S
    2016-12-11-10-25-25
    [hzz@e25f88eebde1 ~]$

    # 更多格式及功能可通过man date查看

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 获取命令的帮助信息方式有以下集中,以XXX命令为例:

type XXX; # 用于获取命令是否是内建命令
help XXX; # 主要用于内建命令
man XXX; # 使用手册
info XXX; # 获取信息页
XXX --help; # 程序内建的帮助信息
XXX -h; # 程序内建的帮助信息

# 除了以上方式,还可以查看官方文档及借助搜索引擎。

# man文档的章节划分:

# 为了区分命令权限,man分为9个章节,存放于/usr/share/man目录。

# man1: 用户命令
# man2: 系统调用
# man3: C库调用
# man4: 设备文件及特殊文件
# man5: 配置文件格式
# man6: 游戏
# man7: 杂项
# man8: 管理类的命令

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/:根目录
|--bin:所有用户可用的基本命令程序文件;
|--sbin:供系统管理使用的工具程序;
|--boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等,只在引导过程中使用。
|--dev:存储特殊文件或设备文件;其中设备有两种类型:字符设备(线性设备)、块设备(随机设备)
|--etc:系统程序的配置文件,只能为静态,不能为执行文件;
|--home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME
|--root:管理员的家目录;可选;
|--lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
|--libc.so.*:动态链接的C库;
|--ld*:运行时链接器/加载器;
|--modules:用于存储内核模块的目录;
|--lib64:64位系统特有的存放64位共享库的路径;
|--media:便携式设备挂载点,cdrom, floppy等;
|--mnt:其它文件系统的临时挂载点;
|--opt:附加应用程序(第三方非关键性程序)的安装位置;可选路径;
|--srv:当前主机为服务提供的数据;
|--tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
|--usr:usr Hierarchy,全局共享的只读数据路径,除了/之外的最重要的目录,可挂载到任何遵循FHS规范的系统上使用;
|--bin, sbin:用户命令和管理员命令(非系统必需);
|--lib, lib64:共享库目录;
|--include:C程序头文件;
|--share:命令手册页和自带文档等架构特有的文件的存储位置
|--local:另一个层级目录;Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序(早期装在/opt下,或安装跟系统自带旧版本冲突的程序新版本);
|--bin, sbin;
|--etc
|--lib, lib64;
|--include
|--share
|--src
|--...
|--X11R6:X-Window程序的安装位置
|--src:程序源码文件的存储位置
|--var:var Hierarchy,存储常发生变化的数据的目录;
|--cache:应用缓存数据;
|--lib:状态数据;
|--local:保存/usr/local变化数据;
|--lock :保存锁文件;
|--log:日志文件或目录保存;
|--opt:保存/opt变化数据;
|--run:进程运行相关数据(pid);
|--spool:应用程序队列数据;
|--tmp:系统重启后需要留存的临时数据;
|--proc:基于内核的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward
|--sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;

06-黄中章