Linux 命令行与 shell 脚本编程大全 1 初识 Linux shell

了解什么是 Linux ,并介绍命令行和 shell 在 Linux 整体架构中的位置

更多精彩

1.1 什么是 Linux

  1. 下图中的每一部分在 Linux 中各司其职,协同构成一个完整的 Linux 系统


    完整的 Linux 系统

1.1.1 深入探究 Linux 内核

  1. 内核是 Linux 的核心
  2. 内核控制着计算机系统上所有的硬件和软件,在必要时分配硬件,并根据需要执行软件
  3. 第一个版本的 Linux 内核是由 Linus Torvalds 读大学时编写的
  4. 内核主要负责以下四种功能


    内核主要功能

1.1.1.1 系统内存管理

  1. 内核的主要功能之一就是内存管理

  2. 内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存

  3. 内核通过硬盘上的存储空间来实现虚拟内存,这个空间称为 交换空间( Swap Space )

  4. 内核不断地在交换空间和实际物理内存之间 反复交换虚拟内存中的内容 ,让系统以为自己拥有比物理内存更多的可用内存

  5. 交换示意入下图,可以看出是由内核来统筹三者之间的数据交换

    1. 内存存储单元按组划分为很多块,这些块称为 页面( Page )
    2. 内核将每个内存页面放在物理内存或交换空间
    3. 内核同时会维护一个 内存页面表 ,在这个表中指定哪些页面在物理内存中,哪些被换到虚拟内存中
    4. 内核会记录哪些内存页面正在被使用,并自动把一段时间没有被使用的内存页面复制到交换空间中,这个过程被称为 换出( Swapping Out )
      内核工作原理
  6. 只要 Linux 在运行,为运行中的程序换出内存页面的过程就不会停止,如下图

    1. 当程序要访问一个已经被换出的内存页面时
    2. 内核必须从物理内存中换出另外一个内存页面用于让出空间
    3. 然后再从交换空间换入被访问的内存页面


      内核工作流程

1.1.1.2 软件程序管理

  1. Linux 将运行中的软件程序称为 进程
  2. 进程可以在前台运行,将输入显示在屏幕上,也可以在后台运行,隐藏到幕后
  3. Linux 中所有的进程都是由内核控制和管理
  4. 内核创建第一个进程 init 进程,用于启动系统上所有其他进程
  5. 内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有空间来存储进程用到的数据和代码
    • 开机时需要启动或停止的应用脚本一般放置在 /etc/init.d
  6. init 进程 存在 运行级( Run Level ) 的概念
  7. Linux 一共有 5 个启动运行级:
    1. 只启动基本的系统进程以及一个控制台终端进程,这被称为 单用户模式
      • 通常用于在系统出现问题时进行紧急的文件系统维护,相当于 Windows 的安全模式
    2. 还没提到
    3. 标准的运行级,可以运行大多数应用程序,例如网络支持程序
    4. 还没提到
    5. 常见的运行级,可以运行图形化界面,允许通过图形化界面登录系统
  8. Linux 可以通过调整启动运行级来控制整个系统的功能

1.1.1.3 硬件设备管理

  1. 内核可以管理硬件设备
  2. Linux 想要和任何设备通信之前,都需要在内核代码中加入该设备的 驱动程序代码
    • 驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据
  3. 内核中有以下两种方法用于插入设备驱动程序代码
    1. 编译进内核的设备驱动代码
      • 每次都需要重新编译内核,非常低效
    2. 可插入内核的设备驱动模块
      • 可以方便的实现热插拔,无需重新编译内核
  4. 硬件设备被 Linux 识别为特殊的文件,称为 设备文件 ,有以下三种类型
    1. 字符型设备文件
      • 处理数据时每次只能处理一个字符,例如调制解调器
    2. 块设备文件
      • 处理数据时每次能处理大块数据,例如硬盘
    3. 网络设备文件
      • 进行数据包发送和接收数据,例如网卡
  5. Linux 会为每个设备文件创建一个 节点 ,用于对这些设备文件进行唯一标识
    • 每个节点都是一个键值对,键是主设备号,相当于类别,值是副设备号,指具体设备

1.1.1.4 文件系统管理

  1. 内核支持通过不同类型的文件系统从硬盘读写数据
  2. 内核采用 虚拟文件系统( Virtual File System ,VFS ) 作为与每个文件系统交互的接口
    • 当每个文件系统被挂载和使用时,VFS 都会将信息缓存到内存中
  3. 下图列出了 Linux 支持用于读写数据的标准文件系统


    Linux 支持用于读写数据的标准文件系统

1.1.2 GNU 工具

  1. GNU( GNU’s Not Unix )组织在开源软件( Open Source Software ,OSS )的软件理念下开发了一套完整的 Unix 工具
  2. 将 Linux 内核和 GNU 操作系统工具整合后,就产生了一款完整的、功能丰富的免费操作系统

1.1.2.1 核心 GNU 工具

  1. 该工具的主要作用是为 Linux 系统管理员设计出一套类似于 Unix 的环境
  2. 供 Linux 使用的核心工具被称为 GNU Core Utilities 软件包,包含以下三个部分
    1. 处理文件
    2. 操作文本
    3. 管理进程

1.1.2.2 shell

  1. GNU / Linux shell 是一种特殊的交互式工具,为用户提供以下功能
    1. 启动程序
    2. 管理文件系统中的文件
    3. 运行在 Linux 上的进程
  2. shell 的核心是命令行提示符
  3. 将多个 shell 命令放入文件中作为程序执行,这被称为 shell 脚本
  4. 所有 Linux 发行版默认的 shell 都是由 GNU 组织开发的 Bash shell
    • Bash 名称由来是根据 Unix 原生的 Bournce shell 修改而来,名为 Bournce again shell
  5. 下图列出了 Linux 支持的 shell 类型


    Linux 支持的 shell 类型

1.1.3 Linux 桌面环境

  1. Linux 之所以提供桌面环境,很大因素是因为受到了 Windows 流行的影响

1.1.3.1 X Windows 系统

  1. X Windows 是图形显示的核心部分
  2. X Windows 是直接和 PC 上的显卡及显示器打交道的底层程序
  3. X Windows 控制着 Linux 程序如何在电脑上显示出窗口和图形
  4. X Windows 是底层软件包,其实现形式有以下几种:
    1. X.org 提供了 X Windows 的开源实现,支持当前市面上很多新显卡
    2. Wayland 被 Fedora Linux 发行版采用
    3. Mir 显示服务器由 Ubuntu Linux 发行版研发

1.1.3.2 KDE 桌面

  1. KDE( K Desktop Environment )在 1996 年作为开源项目被发布
  2. KDE 会生成一个类似于 Windows 的图形化桌面环境

1.1.3.3 GNOME 桌面

  1. GNOME( the GNU Network Object Model Environment )GNU 网络对象模型环境,在 1999 年发布
  2. 现在已经是大部分 Linux 发行版默认的桌面环境
  3. Red Hat Linux 大量采用该桌面环境

1.1.3.4 Unity 桌面

  1. 由 Ubuntu 自行研发的桌面环境
  2. 目标是 为工作站、平板电脑以及移动设备提供一致的桌面体验
    • 就目前来说,平台电脑和移动设备这块已经基本失败了,主要还是缺乏生态

1.1.3.5 其他桌面

  1. 图形化桌面环境的弊端在于,其 需要占用想当一部分的系统资源 来保证运行正常,这和 Linux 诞生的初衷是相违背的
  2. 下图是 Linux 上存在的一些其他图形化桌面


    Linux 上存在的一些其他图形化桌面

1.2 Linux 发行版

  1. 发行版 —— 完成的 Linux 系统包

1.2.1 核心 Linux 发行版

  1. 包含内核、一个或多个图形化桌面环境以及预编译好的几乎所有能见到的 Linux 应用
  2. 目标是提供一站式的完整 Linux 安装
  3. 下图是 Linux 比较流行的核心发行版


    Linux 比较流行的核心发行版

1.2.2 特定用途的 Linux 发行版

  1. 由于核心版体积庞大、配置繁琐,导致安装过程异常复杂,所以出现了针对特性场景使用的 Linux 发行版
  2. 下图是 Linux 比较流行的特定用途发行版


    Linux 比较流行的特定用途发行版

1.2.3 Linux LiveCD 样本系统

  1. 可以在光驱中通过引导直接运行的 Linux 版本,不需要安装就可以看到 Linux 的具体内容
  2. 大部分特定用户的 Linux 发行版都会推出 Linux LiveCD 版本
  3. 但由于是从光驱读取的原因,该版本存在以下两大缺陷:
    1. 受制于光驱的读取速度,应用程序运行起来比较慢
    2. 无法从光驱向 CD 写入数据,所以对系统做的任何修改再下一次加载时都会失效
  4. 下图是 Linux 比较流行的 LiveCD 样本系统


    Linux 比较流行的 LiveCD 样本系统

1.3 小结

  1. Linux 内核是系统的核心,控制着内存、程序和硬件之间的交互
  2. GNU 工具也是 Linux 系统中的一个重要部分
  3. 现在的 Linux 可以支持多种图形化桌面环境
  4. Linux 发行版就是把 Linux 的不同部分汇集起来组成一个易于安装的包
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,332评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,930评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,204评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,348评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,356评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,447评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,862评论 3 394
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,516评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,710评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,518评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,582评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,295评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,848评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,881评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,121评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,737评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,280评论 2 341