N26-第一周作业-邢岩
马哥门徒-N26-邢岩
悲催了! 首次使用这个博客,居然连续未保存删除了两次,这可是我用了四个小时才写好的啊!瞬间蓝瘦香菇了!感觉就像是Linux中使用了rm -rf / 一样。
还是重新开始写吧,第一次接触Linux是在8年之前了,当时弄到了一张红帽的光盘,可是怎么也装不上系统,就放弃了。现在又来学习Linux,想起来还真是有缘。那我就从计算机的组成和功能谈起吧。
计算机的基本硬件系统由运算器、控制器、寄存器、输入设备和输出设备5大部件组成。
1.CPU:Central Processing Unit, 是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。CPU主要由运算器、控制器、寄存器和内部总线等部件组成。
CPU的功能:程序控制、操作控制、时间控制和数据处理。
运算器:由算术逻辑单元(ALU)、累加寄存器(AC)、数据缓冲寄存器(DR)和状态条件寄存器(PSW)组成,它是数据加工处理部件,完成计算机的各种算术运算和逻辑运算。
控制器:包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。用于控制整个CPU的工作,它决定了计算器运行过程的自动化。
2. 寄存器:可以分为专用寄存器和通用寄存器。
3. 输入设备:用于输入原始数据及各种命令。
4.输出设备:用于输出计算机运行的结果。
接下来,我来按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别(根据GNU/Linux Distribution Timeline)
1.Debian: 是完全由自由软件组成的类UNIX操作系统,其包含的多数软件使用GNU通用公共许可协议授权,并由Debian计划的参与者组成团队对其进行打包、开发与维护。
-
Knoppix:是一套光盘或USBU盘启动的GNU/Linux系统(LiveCD),功能包括:自动硬件监测、支持常见的显卡、声卡、SCSI和USB设备,以及其它外设。KNOPPIX可用于Linux演示、光盘教学、系统急救,经过适当改造,还可以用于商业软件的产品演示。KNOPPIX采用了特殊的解压缩技术,不需要硬盘安装,一张CD,就容纳了2GB的可执行程序,供用户自由使用。
-
Ubuntu:Ubuntu是基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本(即每年的四月与十月),每2年发布一个LTS长期支持版本。Ubuntu的目标在于为一般用户提供一个最新同时又相当稳定,主要以自由软件建构而成的操作系统。Ubuntu目前具有庞大的社区力量支持,用户可以方便地从社区获得帮助。
-
Linux Mint:是一种基于Ubuntu/Debian的Linux操作系统。由Linux Mint Team团队于2006年开始发行。Linux Mint的目标是为家庭用户和企业客户提供一个免费、高效、易用、高雅的桌面操作系统。Linux Mint是对用户友好而功能强大的操作系统。Linux Mint的理想之一,以简单的方式呈现先进技术给用户,以此来成为最优秀的操作系统。这种简单方式的实现,不是通过简化结构与机能而削减功能,也不是通过抄袭其它开发者的实现方法。
2.Slackware: 是Slackware Linux, Inc的Patrick Volkerding制作的Linux发行版本。Slackware走了一条与其他的发行版本(Red Hat、Debian、Gentoo、SuSE、Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版本。它的方针是只吸收稳定版本的应用程序,并且缺少其他Linux版本中那些为发行版本定制的配置工具。
-
S.u.S.E:简写“SuSE”,于1992年末创办,目的是成为UNIX技术公司,专门制为德国人推出量身订作的SLS/Slackware软件及UNIX/Linux帮助文档。
-
SLAS:由捷克人Tomáš Matějíček研发,是一个基于Slackware和KDE桌面环境的操作系统。 Slax是一个便捷、便携的Linux操作系统。它的界面既充满时尚感,又可基于不同模块的功能运作。它的界面富有时尚感,并集成了不同的模块的界面。尽管它的容量十分娇小,Slax依然预载了不少日常应用的软件。除此之外,它还拥有精简而齐整的图形用户界面和一些有用的修复工具,方便系统管理员修复系统。
-
openSUSE:openSUSE在全世界,尤其是在德国被广泛使用。它的开发重心是为软件开发者和系统管理者创造适用的开放源代码的工具,并提供易于使用的桌面环境和功能丰富的服务器环境。openSUSE针对桌面环境进行了一系列的优化,对Linux新手较为友好。
3.RedHat: Red Hat Linux是由Red Hat公司发行的一个Linux发行包。
-
Fedora Core:是较具知名度的Linux发行包之一,由Fedora项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。
-
Red Hat Enterprise:(RHEL)是一个由 Red Hat 开发的商业市场导向的 Linux 发行版。
-
CentOS:是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。CentOS 对上游代码的主要修改是为了移除不能自由使用的商标。
4.Gentoo:基于Portage包管理系统,而拥有几乎无限制的适应性特性,被官方称作元发行版(meta-distribution),支持多达10种以上的电脑系统结构平台。此项目和它的产品以巴布亚企鹅命名。Gentoo包管理系统的设计是模块化、可移植、易维护、灵活以及针对用户机器优化的。软件包从源代码构建,这延续了ports的传统。但是为了方便,也提供一些大型软件包在多种架构的预编译二进制文件,用户亦可自建或使用第三方二进制包镜像来直接安装二进制包。
5.ArchLinux:是朝向轻量(lightweight)以及简单(simple)的Linux发行版。其中“简单”(Simplicity)被定义为“避免不必要或复杂的修改”,也就是说,是由开发者角度定义,而非用户角度思考。Arch Linux是由二进制软件包组成的,这些软件包会针对i686及x86-64优化以配合目前的硬件。
Linux的版本还是很多的,看起来眼花缭乱的。以后要不断的尝试才行。接下来,我来描述Linux的哲学思想,并按照自己的理解对其进行解释。
1.一切皆文件,把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等。表现之一:硬件设备也通过文件表示。如:open(), read(), write(), close(), delete(), create()。这就好像是小时候玩的积木一样,一切都是积木组成的,可以撘成我想要的任何形状,还可以用来计算。
物理终端:/dev/console
虚拟终端:/dev/tty# [1-6]
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
查看终端设备: tty
查看接口程序: echo #SHELL
查看所用的shell类型: echo $SHELL
2.由众多功能单一的程序组成:一个程序只做一件事,并且做好,需要组合小程序完成复杂任务。这很像我们人类的组织,领导安排任务给每一个员工,员工各司其职,只要做好分内的事情就可以了。
3.程序启动后尽量避免跟用户交互。目标:易于以编程的方式实现自动化任务。这也就如员工做好自己的工作,避免去打扰其他人一样。
4.使用文本文件保存配置信息。我觉得,之所以用文本文件,是由于文本占用的内存最低,最节省磁盘空间。
看来Linux的思维与我们还是一样的,那么,我就来说明一下Linux系统上命令的使用格式,并详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
1.ifconfig:配置网络接口
2. echo:回显
常见用法:
-
-n:不进行换行
-
-e:让转义字符生效
1)echo string 可以使用引号,
单引号:强引用,变量引用不执行替换。
双引号:弱引用,变量引用会被替换。
2)echo命令用于在shell中打印shell变量的值。
3.tty:显示当前终端
4.startx:启动GUI界面
5.export:设置或显示环境变量
6.pwd:以绝对路径的方式显示用户当前工作目录。
7.history:显示历史指令记录内容
命令用法:
-c: 清空命令历史
-d offset: 删除指定历史命令
-r:从文件读取命令历史至历史列表中
-w:把历史列表中的命令追加至历史文件中
history #:显示最近的#条命令
调用命令历史列表中的命令
!#: 再一次执行历史列表中的第#条命令
!!: 再一次执行上一天命令
!STRING: 再一次执行命令历史列表中最近一个以STRING开头的命令
8.shutdown:系统关机命令
命令用法:
-r 关闭系统然后重新启动,类似于Windows平台restart
-k 模拟关机(不是真的关机),只是向登录者发送警告信息
-h 关机后关闭电源〔halt〕。
-n 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。
-c 取消目前正在执行的关机程序。这个选项没有时间参数﹐但是可以发送一个讯息给每位使用者。
-f 快速关机重启动时跳过fsck。
now
hh:mm
+m
+0 现在
9.poweroff:
10.reboot:
11.hwclock:
12.date:
date [OPTION]... [+FORMAT]
FORMAT: 格式符 %F %T %Y %m %d %H %M %S
%s: 从1970年1月1日(Unix元年)0点0分0秒到执行命令那一刻经过的秒数
~]# date +"%F %T"
设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]
~]# date 010211122017.30
这些命令还是要好好记住的。冰冻三尺非一日之寒,重要的事情说三遍:练习、练习、练习。然后,我来看看如何在Linux系统上获取命令的帮助信息,详细列出,并描述man文档的章节是如何划分的。
命令分为两类,可以使用type COMMAND查看命令类型。
内建命令:由shell程序自带的命令(builtin)。
外部命令:独立的可执行程序文件,文件名即命令名。
1.内建命令使用:help COMMAND
2.外部命令使用:
1)命令自带简要格式的使用帮助:COMMAND –help
2)使用帮助手册(manual):man COMMAND
3)info COMMAND:获取命令的在线文档
4)很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
README:程序的相关信息
INSTALL:安装帮助
CHANGES:版本迭代时改动信息
5)主流发行版版官方文档
6)搜索引擎
使用手册:压缩格式的文件,有章节之分。在目录/usr/share/man中,分为man1-man8
man1:用户命令,普通用户和管理员都可以使用
man2:系统调用
man3:C库调用
man4:设备文件及特殊文件
man5:文件格式:配置文件格式
man6:游戏使用帮助
man7:杂项
man8:管理工具及守护进程
使用:man CHAPTER COMMAND
注意:
1.并非每个COMMAND在所有章节下都有手册
2.通过~]#whatis COMMAND查看命令在哪些章节存在
3.whatis执行过程是查询数据库进行的,如果有新命令加入需要手动更新数据库:~]#makewhatis
man命令的帮助用起来还是很不错的,最后,我再来罗列Linux发行版的基础目录名称、命名法则及功用规定。
Linux的FHS(Filesystem Hierarchy Standard,文件系统层级标准):Linux的标准规范
Linux文件系统以'/'为原初起点形成树状结构
/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 存储特殊文件或设备文件
设备有两种类型:字符设备和块设备
字符设备(线性设备):数据交换是以字符为基本单位进行的,如早期显示器,键盘
块设备(随机设备):把多个字符打包成一个单位进行的,如硬盘
/etc: Host-specific system configuration 主机特有的系统程序的配置文件,只能为静态文件
/home: User home directories(optional) 普通用户的家目录的集中位置,层级结构:一般每个普通用的家目录默认为此目录下与用户名同名的子目录, /home/USERNAME;
/root: Home directory for the root user(optional) 管理员的家目录,可选;
重要:不要使用管理员登录
/lib: Essential shared libraries and kernel modules 基础共享库和内核模块
/lib<qual>: Alternate format essential shared libraries (optional) 为系统启动或根文件系统上的应用程序(/bin ,/sbin 等)提供共享库,以及内核挺内核模块。(对32系统可选,64位系统必须的),主要是为 /bin和 /sbin提供共享库的
libc.so.*:动态链接的C库
ld*:运行时连接器/加载器
modules: 用于存储内核模块的目录
/lib64: 64位系统特有的存放64位共享库的路径
/media: Mount point for removeable media 便携性设备挂载点
/mnt:Mount point for a temorarily mounted filesystem 其他文件系统的临时挂载点
/opt: Add-on application softeware packages 附加应用程序(第三方应用程序)的安装位置,可选路径 如:oracle, stack,
/srv: Data for services provided by this system 当前主机为服务提供的数据
/tmp: Temporary files 临时文件目录,可供所有用户执行写入操作,有特殊权限
/usr: usr Hierarchy 全局共享的只读数据路径,除了根以外第二重要的
bin, sbin
lib, lib64
include: C程序头文件
share:架构特有的文件的存放位置,命令手册页和命令自带文档等
local:另一个层级目录
X11R6:X-Window程序的存放位置
src:程序源码文件的存储位置
/usr/local: Local hierarchy 真正用来存储第三方程序的,让系统管理员安装本地应用程序
/var: var Hierarchy 存储经常发生变化的数据的目录,如日志
cache
lib:程序的状态数据
local:
lock
opt
run
spool
/tmp:系统重启后依然需要留存的数据
/proc: Kernel and process information virtual filesystem 基于内存的虚拟文件系统。为内核及进程存储其相关信息的,它们为内核参数,如:net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/,因此其完整路径为 /proc/sys/net/ipv4/ip_forwrad
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理Linux设备提供一种统一的模型的接口
今天就到这里了,真不容易啊,这篇博客我写了一天的时间,忘记保存真的是一个教训。下次再会!