墨色琉璃的Linux学习周记--第一周

1.Linux内核

Linux

内核内部功能:驱动程序、内存管理、进程管理、安全管理、网络功能和文件系统

驱动程序:驱动是使内核能够与硬件或协议进行通信或控制的程序,如果没有驱动,内核将无法与硬件进行控制或通信,因为实际上内核将指令发送给BIOS,然后BIOS将指令发送给硬件。

内存管理:Linux的内存管理通常用于动态的物理内存的管理,隔离的用户地址空间管理,内存的分配和回收。

进程管理:负责管理CPU资源,以便让各个进程可以尽量公平的方式访问CPU。

安全管理:内核是Linux的核心,如果有恶意的代码控制或者破坏了内核的一部分,整个系统可能受到严重的破坏,信息遭到窃取,所以需要安全管理模块来提高内核的安全性。

网络功能:负责管理网络的网络设备吗,并实现多种多样的网络标准。

文件系统:文件系统是数据的集合,文件系统不仅包含着文件中的数据还有文件系统的结构,所有Linux用户和程序看到的文件,目录,软链接、文件保护信息,设备文件都存储其中。

2.常见Linux发行版的异同

Linux的发行版本,从性质上划分,可以分成商业公司维护的商业版本和开源社区维护的免费发行版本。商业版本以Redhat为代表,开源社区版则以ubantu,debian为代表。

ubantu:有很漂亮的用户界面,完善的包管理系统,强大的软件源支持,ubantu还对大多数硬件有良好的兼容性,包括图形显卡,向着大众化方向发展。ubantu的应用很多,最佳的应用领域是桌面操作系统而不是服务器操作系统。

centos:centos是从RHEL源代码编译的社区重新发布版。命令行下人性化很好,有强大的英文文档与开发社区的支持,去除了很多与服务器功能无关的应用,系统简单但是非常稳定,命令行操作可以方便管理系统和应用,并且有帮助文档。

Debian:Debian和ubantu相比稳定的多,只要应用层面不出现逻辑缺陷,基本没有问题,debian整个系统的基础和核心非常小,不仅稳定而且占用磁盘空间小,占用内存小,但是帮助文档相对于centos略少,技术资料也少一些。

3.CPU架构

CPU

主要划分成三个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU总线连接起来。

控制单元:整个CPU的指挥控制核心,由指令寄存器IR、指令译码器ID和操作控制器OC等,对协调整个电脑有序工作起气味重要的作用,首先从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码分析应该选择进行什么操作,然后通过指令操作器OC,按确定的时序,向相应的部件发出操作控制信号。

运算单元:是运算器的核心。可以执行算数运算和逻辑运算。相对于控制单元而言,运算器接受控制单元的命令而进行操作,即运算单元进行的全部操作都是控制单元发出的控制信号来指挥的,所以是执行部件。

存储单元:包括CPU内缓存和寄存器组,是CPU暂时存放数据的地方,里面保存着那些等待处理的数据,或者已经处理过的数据,CPU访问寄存器的时间比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组容量不可能很大,寄存器组可以分成专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可以由程序员规定用途。

4.常见的开源协议

    BSD开源协议:BSD开源协议是一个给予使用者很大自由的协议。开发者可以自由使用和修改源代码,也可以将修改后的源代码作为开源或者专有软件再发布。但是有以下几个要求:

        如果再发布的产品中含有源代码,则再源代码中必须带有原来代码中的BSD协议。

        如果在发布的知识二进制类库/软件,则需要在类库/软件的文档和版权申明中包含原有代码中的BSD协议。

        不可以再用开源代码的作者/机构名字和原来产品的名字做市场推广。


    Apache2.0:Apache license是开源组织Apache采用的协议。与BSD类似,需要遵循以下条件:

        需要给代码的用户一份Apache license。

        如果修改了代码,需要在被修改的文件中说明。

        在衍生的代码中需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。

        如果再发布的产品中包含一个Notice文件,则再Notice文件中需要带由Apache license。可以在Notice中增加自己的许可,但是不可以表现为对APache license构成修改。

       使用这个协议的好处是:

       永久权利一旦被授权,永久拥有。

       全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。

       授权免费 无版税, 前期、后期均无任何费用。

       授权无排他性 任何人都可以获得授权。

       授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。


    GPL:GPL协议的主要内容是只要在一个软件中类库引用,修改后的代码或者衍生代码的GPL协议的产品,则该软件产品也必须采用GPL协议,必须开源和免费。


    LGPL:是GPL的一个为主要为类库使用设计的开源协议。LGPL允许商业软件用过类库引用方式使用LGPL类库而不需要开源商业软件的代码。着使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生代码都必须采用LGPL协议。因此LGPL协议的开源代码适合作为第三方类库 被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的软件引用。

    GPL和LGPL都是保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

5.人机交互SHELL、GUI和CLI

Linux本质上是一个内核,这个内核可以用来做很多的事情,整个电脑都归内核来管理。显卡、声卡、内存、硬盘、以及硬盘上的各种程序也是归内核调度。但是内核让硬件和软件做什么,内核本身是不知道的,需要接受人类用户给它下指令,中间作为人机交互的桥梁的软件就是shell。在人和操作系统之间传达信息。

GUI(图形化用户界面)

           Graphical user interface(图形化用户接口)

            用图形的方式,来显示计算机操作的界面,这样方便更直观。

CLI

            Commandline User Interface(命令行用户接口)

            最常见的DOS命令操作。

6.Xshell远程终端连接服务器

Xshell

可以实现在windows界面下来访问远程终端不同系统下的服务器,从而比较好的达到远程控制终端的目的。

7.Linux终端介绍

Linux

终端分为伪终端、虚拟终端、物理终端、图形终端、串行终端。

虚拟终端:虚拟终端就是那些没有图形界面,像DOS那样的命令行。虚拟终端就是把一台全功能的电脑通过软件模拟成另外一台计算机的终端设备。

    伪终端:图形界面下的命令行窗口,叫做伪终端。但是这个伪终端是脱离图形界面的、按ALT+ctrl+F1~F6组合键出来的那个终端而说的。伪终端的工作方式就是在左面上申请一个窗口,然后在里面模拟显示出一个黑漆漆的界面。比如GNOME终端、Konsole终端、xterm终端、urxvt终端等。

    物理终端:直接连接在主机上的显示器、键盘鼠标统称。在实际机架式服务器部署中,一般是多台服务器共享一套终端,简称KVM(keyboard键盘,video显示器,mouse鼠标)。

    图形终端:快捷键Ctrl+alt+F7,相当于在图形化界面桌面打开终端,是一个虚拟终端。

    串行终端:串口输出,与机器的串口对应,每一个串口对应一个串行终端,串口对应的是物理终端。

8.命令提示符在centos7中,命令提示符如:[root@nodel~]#COMMAND

root:当前用户

nodel:当前的主机名

~:当前所在目录,称为工作目录(working directory)

#:命令提示符,为root,拥有最高权限,能执行所有操作

$:普通用户,非root用户,不具有管理权限,不能执行所有操作注意:正常使用非管理员登录执行管理员操作操作切换至管理员,操作完成即返回。

9.Linux哲学思想

1)一切皆文件:

       把几乎一切资源统统抽象成文件形式;包括硬件设备,甚至是通信接口等。由众多功能单一的程序组成:

2)一个程序只做一件事,并且做好;

       组成小程序完成复杂任务。

3)尽量避免与用户交互:

       易于以编程的方式实现自动化业务。

4)使用文本文件保存配置信息。

10.Linux文件系统文件路径表示

文件系统是层级结构,成倒置树状结构呈现,例:/dev/pts/2,其中最左侧的/表示根目录,其他的/表示路径分隔符。

文件系统文件的路径表示一般有两种:

       一种是文件的绝对路径:从根目录开始的文件路径;

       还有一种是文件的相对路径:从当前位置开始表示的路径。

11.命令的通用语法格式:$ COMMAND OPTIONS ARGUMENTS

其中OPTIONS是指定命令的运行特性选项一般有两种表现形式:

短选项:-c 注意:如果同一命令使用多个短选项可合并显示

长选项: --word,--help 注意:有些选项可以携带参数,此项称为选项参数

12.man手册是Linux的帮助文档,存放于/usr/share/man,其中分为8个章节,依次分别是:用户命令、系统调用、c库调用、设备文件及特殊文件、文件格式(配置文件)、游戏玩法、杂项、管理工具及守护运行。

13.常用命令的用法

pwd:printing working directory(显示工作目录)

cd:change directory

cd [/PATH/TO/DIRECTORY]

cd :切换回家目录注意:bash中,~代表家目录

cd ~:切换回自己的家目录

cd ~USERNAME:切换为指定用户的家目录

cd -:在上一次的所在目录与当前目录来回切换

$PWD:当前工作目录

$OLDPWD:上次工作目录

        ls:list,列出指定目录下的文件

                   ls [OPTION]...[FILE]...

                       -a:显示所有的文件,包括隐藏文件

                       -A:显示除.和..在内的所有文件

                       -l: --long,长格式列表,即显示文件的详细属性信息

                       -h: --human-readable:对文件大小单位换算,换算后的结果可能是非精确值

                       -d:查看目录本身,而非目录内部的文件列表

                       -r:reverse,逆序显示

                       -R:recursive:递归显示

       cat:concatenate

                   文件和文本的查看工具

                            cat[OPTION]...[FILE]...

                                    -n:给显示的文本行编号

                                    -E:显示行结束符$

        file:查看文件内容属性

                   file [file]...

        echo:回显命令

                   -n:不自动进行换行操作

                   -e:让转义符生效

        关机式重启命令:

                     shutdown

                            shutdown[OPTIONS..] [TIME] [WALL...]

                                    OPTIONS:

                                                                   -h:halt

                                                                    -r:reboot

                                                                   -c:cancel

                                    TIME:

                                                                   now

                                                                   hh:mm

                                                                   +m

        日期相关的命令:date、clock、hwclock、cal

                                date[OPTIONS]...+[FORMAT]

                                clock和hwclock中选项

                                                                                   -s --hctosys

                                                                                   -w --systohc

    以上是Linux的第一周学习内容,开始对Linux系统的整个框架有了一个大概的理解,以及其命令行的结构,使用方法,基础命令有了初步的认识,也将这些在虚拟机上实际操作了几回,感觉很有趣,希望自己能够坚持下去,将Linux系统能够运用的更加流畅,并在以后的工作中能游刃有余的处理相关问题。

你可能感兴趣的:(墨色琉璃的Linux学习周记--第一周)