【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter1-初始 Linux Shell

一、初识 Linux shell
  1. Linux 系统可划分为以下 4 部分。

    • Linux 内核
    • GNU 工具
    • 图形化桌面环境
    • 应用软件
  2. 内核主要负责以下 4 种功能。

    1. 系统内存管理
      • 内核通过硬盘上称为交换空间(swap space)的存储区域来实现虚拟内存。内核在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为自己拥有比物理内存更多的可用内存。
      • 内存被划分为若干块,这些块称作页面(page)。内核会将每个内存页面置于物理内存或交换空间中。然后,内核会维护一张内存页面表,指明哪些页面位于物理内存,哪些页面被交换到了磁盘。
      • 内核会记录哪些内存页面正在使用中,自动把一段时间未访问的内存页面复制到交换空间区域(称之为换出,swapping out)——即使还有内存可用。当程序要访问一个已被换出的内存页面时,内核必须将物理内存中的另一个页面换出来为其腾出空间,然后从交换空间换入(swapping in)所请求的页面。
    2. 软件程序管理
      • 内核创建了第一个进程(称为 init 进程)来启动系统中所有其他进程。当内核启动时,它会将 init 进程载入虚拟内存。内核在启动其他进程时,会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
      • 在 Linux 中,有多种 init 进程实现,目前最流行的是以下两种。
        • SysVinit:Linux 最初使用的是 SysVinit(SysV)初始化方法,该方法基于 Unix System V 初始化方法。尽管如今很多 Linux 发行版已经不再使用 SysVinit 了,但在一些比较旧的 Linux 发行版中还能找到其身影。
        • systemd:systemd 初始化方法诞生于 2010 年, 现在已经成为 Linux 发行版中最流行的初 始化和进程管理系统。
      • systemd 初始化方法得以流行起来的原因在于能够根据不同的事件启动进程。
        • 系统启动时
        • 连接到特定的硬件设备时
        • 服务启动时
        • 建立好网络连接时
        • 计时器到期时
      • systemd 方法通过将事件与单元文件(unit file)链接来决定运行哪些进程。每个单元文件定义了特定事件发生时要启动的程序。systemctl 程序允许启动、停止和列出系统中当前运行的单元文件。
      • systemd 方法将单元文件划归为目标(target)。目标定义了 Linux 系统的特定运行状态,这和 SysVinit 运行级的概念类似。在系统启动时,default.target 单元定义了要启动的所有单元文件。可以使用 systemctl 命令查看当前默认目标:
        $ systemctl get-default
        graphical.target
        
      • graphical.target 单元文件定义了多用户图形环境运行时要启动的进程。
    3. 硬件设备管理
      • 任何 Linux 系统需要与之通信的设备都必须在内核代码中加入其驱动程序。向 Linux 内核中插入设备驱动的方法有两种:
        • 将驱动程序编译入内核(低效)
        • 将设备驱动模块加入内核(无需重新编译内核、可插入、可移走)
      • Linux 系统将硬件设备视为一种特殊文件,称为设备文件。设备文件分为 3 种:
        • 字符设备文件
        • 块设备文件
        • 网络设备文件
      • 字符设备文件对应于每次只能处理一个字符的设备。大多数类型的调制解调器和终端是作为字符设备文件创建的。块设备文件对应于每次以块形式处理数据的设备,比如硬盘驱动器。网络设备文件对应于采用数据包发送和接收数据的设备,这包括网卡和一个特殊的环回设备,后者允许 Linux 系统使用常见的网络编程协议同自身通信。
      • Linux 会为系统的每个设备都创建一种称为“节点”的特殊文件。与设备的所有通信都是通过设备节点完成的。每个节点都有一个唯一的数值对,以供 Linux 内核标识。数值对包括一个主 设备号和一个次设备号。类似的设备会被划分到相同的主设备号下。次设备号用于标识主设备组 下的某个特定设备。
    4. 文件系统管理
      • Linux 还能够读写其他操作系统(比如 Microsoft Windows)的文件系统。内核必须在编译时就加入对所有要用到的文件系统的支持。
      • Linux 内核采用虚拟文件系统(virtual file system,VFS)作为和各种文件系统交互的接口。这为 Linux 内核与其他类型文件系统之间的通信提供了一个标准接口。当文件系统被挂载和使用时,VFS 会在内存中缓存相关信息。
  3. GNU 实用工具

    1. 除了由内核来控制硬件设备,操作系统还需要实用工具来实现各种标准功能,比如控制文件和程序。
    2. GNU coreutils 软件包由 3 部分构成。
      • 文件实用工具
      • 文本实用工具
      • 进程实用工具
    3. Linux shell 属于 GNU 核心工具集的一部分。GNU/Linux shell 是一种特殊的交互式工具,为用户提供了启动程序、管理文件系统中的文件以及运行在 Linux 系统中的进程的途径。shell 的核心是命令行提示符,负责 shell 的交互部分,允许用户输入文本命令,然后解释命令并在内核中执行。
    4. 所有 Linux 发行版默认的 shell 都是bash shell。
    5. 其他几种流行的 shell:
      shell描 述
      ash一种简单的轻量级 shell,运行在内存受限环境中, 但与 bash shell 完全兼容
      korn一种与 Bourne shell 兼容的编程 shell,但支持如关联数组和浮点算术等高级编程特性
      tcsh一种将 C语言中的一些元素引入 shell脚本中的 shell
      zsh一种结合了 bash、tcsh 和 korn 的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级shell
  4. 多数 Linux 发行版也有 LiveCD 版本可用。LiveCD 版本是一个自成一体(self-contained)的 ISO 镜像文件,可以刻录成 DVD(或写入 U 盘),直接引导 Linux 系统,无须安装在硬盘上。LiveDVD 的好处是可以在安装系统之前先测试系统硬件, 解决存在的问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux命令行Shell脚本编程大全 第4》是一本经典的Linux命令行Shell脚本编程方面的参考书。这本书的作者是Richard Blum和Christine Bresnahan,他们通过深入浅出的方式,全面介绍了Linux命令行Shell脚本的概念、基础知识和实际应用。 本书的第一部分涵盖了Linux的基本知识,包括如何安装和配置Linux操作系统,如何使用终端和命令行,以及如何使用虚拟终端和远程登录等。这些内容对于初学者来说非常有用,可以让他们迅速上手Linux系统。 第二部分是本书的重点,详细介绍了Linux命令行的各个方面。从基本的文件和目录操作,到网络和系统管理等,每个章节都通过实例演示了具体的命令和用法。同时,为了帮助读者更好地理解和使用这些命令,作者还提供了常见的问题和解决方案。 第三部分是关于Shell脚本编程的内容,包括Shell脚本的基本语法、变量和运算符等。此外,还介绍了如何编写实用的脚本,如文件管理、文本处理和系统监控等。这些脚本可以帮助读者提高工作效率,自动化重复性的操作。 除了基础知识,本书还进一步介绍了Linux系统的高级用法,如进程管理、系统调试和Shell编程技巧等。通过阅读本书,读者不仅可以掌握Linux命令行Shell脚本编程的基本知识,还可以提高工作效率,解决实际问题。 总之,《Linux命令行Shell脚本编程大全 第4》是一本非常实用的Linux命令行Shell脚本编程方面的参考书,适合初学者和有一定经验的用户阅读。无论是系统管理员、开发人员还是普通用户,都可以从中受益,提升对Linux系统的理解和应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值