趁着这几日找工作,把一些知识简单的整理一下,形成逻辑,内化吸收,真正做到随手可写,随时可用,真正的成为骨子里的东西而不是会“用”,而不会“写”!细想一下,还真的是命令虽然简单,但有时真的让你立即去执行的时候,还是会出现卡顿的。纯个人观点,如果有一些不恰当地方或者明显错误的地方希望大家指正,有些东西当然借鉴的,若有涉及到版权问题,请及时与本人联系,我将立即删除。

    对Linux有一定了解的人想必都应该知道,尽管通常我们将Linux内核和GNU工具链的结合体称为Linux,但是一些Linux纯粹主义者将其称为GNU/Linux系统来表彰GNU组织为此所做的贡献。当然,我自己也是比较倾向于后者GNU/Linux。因为这个名字完全而准确的指出了Linux的组成:Linux内核+GNU工具组件。也有人说还有图形化桌面环境和应用软件,也不否认,但我仍坚持认为,前两者是最核心的,它们应经提供了良好的人机交互体验,所以这里简单Linux内核和GNU工具组件。

    Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件:必要时分配硬件,有需要时执行软件。 内核负责以下四项主要功能:   

  • 系统内存管理

  • 软件程序管理

  • 硬件设备管理

  • 文件系统管理

  1. 系统内存管理

        操作系统内核个基本功能之一是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即并不实际存在的内存)。

        你可以通过/proc/meminfo文件来观察Linux系统上虚拟内存的当前状态。Linux基础之常识(一)_Linux

        MemTotal:行表明这个Linux服务器有500M的内存(虚拟机),该文件表明大约有9M的空闲空间剩余(MemFree)。也是醉了,凑合说明问题就行了,输出表明这个系统上大约有2GB的交换空间(SwapTotal)。

  2. 软件程序管理

        Linux操作系统称运行的程序为进程。进程可以在前台运行,将输出显示在屏幕上;也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。

        内核创建了第一个进程(init进程)来启动系统上所有其他进程。当内核启动时,他会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储改进程用到的数据和代码。

        一些Linux系统发行版是由一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于专门文件/etc/inittab中。

  3. 硬件设备管理

      内核的另一职责就是管理硬件设备。任何需要和Linux系统之间通信的设备,都需要在内核中加入其驱动程序的代码(driver code)。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核同设备之间交换数据。在Linux内核中有两种方法用来插入设备驱动代码:

    a、编译进内核的设备驱动代码

    b、可插入内核的设备驱动模块

        Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有三种不同的分类:

  • 字符型设备文件

  • 块设备文件

  • 网络设备文件

Linux为系统上的每个设备文件都创建一种特殊的文件,称为“节点”。与设备的所有通信都是通过设备节点完成的。每个节点都有一个唯一的数值对,供Linux内核标识他。数值对包括一个主设备号和一个个次设备号。类似的设备被划分到同样的主设备号下。次设备号用来标识同一主设备号下的某个特殊设备。


文件系统管理Linux支持多种文件系统,任何供Linux服务器访问的硬盘都必须格式化成文件系统的一种。Linux内核采用虚拟文件系统(VFS)作为和每个文件系统交互的接口。这位Linux内核同任何类型文件系统通信提供了一个标准接口,当每个文件系统被挂载和使用时,VFS将信息都缓存在内存中。

    

    GNU工具链

  1. 核心GNU工具链

  GNU coreutils软件包有3部分组成:

  • 用于处理文本的工具

  • 用于操作文本的工具

  • 用于管理进程的工具

    这三组主要工具中的每一组都包含一些对Linux系统管理员和程序员至关重要的工具。

2.  shell

    简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

         我接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。