初识Linux Shell

引言

以后需要在Linux环境下工作了,但对Linux还很陌生。赶紧弄了本《Linux命令行与shell脚本编程大全(第二版)》使劲啃,现将它的第一章的部分内容整理成了这篇博客,基本是摘录。

什么是Linux

Linux可划分为以下四个部分:

  • Linux内核
  • GNU工具组件
  • 图形化桌面环境
  • 应用软件

在Linux系统里,这四部分中的每一个部分都扮演着一个特别的角色。如果将它们分开来,每部分都没有太大的作用。基本结构框图如下:

深入探究Linux内核

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

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理
1、系统内存管理

操作系统内核的基本功能之一是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即并不存在的内存)。
内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存存储单元中的内容。这使得系统以为它拥有比物理内存更多的可用内存。

内存存储单元会被按组分成很多块,这些块称作页面。内核会将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,来指明哪些页面位于物理内存内,哪些页面被换到磁盘上。
内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称之为换出, swapping out)—-即使还有可用内存。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面来给它让出空间,然后从交换空间换入(swapping in)请求的内存页面。显然,这个过程要花费时间,并使得运行中的进程变慢。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。
可以查看专门的/proc/meminfo文件来观察Linux系统上虚拟内存的当前状态。shell命令为

cat /proc/meminfo

默认情况下,运行在Linux系统上的每个进程都有各自的内存页面。进程不能访问其他进程正在使用的内存页面。内核维护着它自己的内存区域。出于安全考虑,用户进程不能访问内核进程使用的内存。
为了方便共享数据,可以创建一些共享内存页面。多个进程可在同一块共用内存区域进行读取和写入操作。内核负责维护和管理这块共用内存区域并控制每个进程访问这块共享区域。ipcs命令专门用来查看系统上的当前共享内存页面。

2、软件程序管理

Linux操作系统称运行中的程序为进程。进程可以在前台运行,将输出显示在屏幕上;也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。
内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。

3、硬件设备管理

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

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块

开发人员提出内核模块的概念。允许驱动代码插入到运行中的内核而无需重新编译内核。当设备不再使用时,也可以将内核模块从内核中移走。这种方式极大简化和推动了硬件设备在Linux上的使用。
Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有三种不同的分类:

  • 字符型设备文件
  • 块设备文件
  • 网络设备文件

字符型设备文件是指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。块设备文件是指处理数据时每次能处理大块数据的设备,比如硬盘。网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许Linux系统使用通用的网络编程协议同自己通信。
Linux为系统上的每一个设备都创建一种特殊的文件,称为”节点”。与设备的所有通信都是通过设备节点完成的。每个节点都有一个唯一的数值对,供Linux内核标识。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号上。次设备号用于标识同一主设备号下的某个特殊设备。

4、文件系统管理

Linux内核支持多种不同类型的文件系统从硬盘中读取或写入数据。除了自有的诸多文件系统外,Linux还支持从其他操作系统(如Microsoft Windows)所采用的文件系统中读取或写入数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。
Linux内核采用虚拟文件系统(Virtual File System, VFS)作为和每个文件系统交互的接口。这为Linux内核同任何类型文件系统通信提供了一个标准接口。当每个文件系统被挂载和使用时,VFS将信息都缓存在内存中。

GNU工具链

1、核心GNU工具链

为Linux系统提供的一组核心工具被称为coreutils(core utilities)软件包。
GNU coreutils软件包由3部分构成:

  • 用以处理文件的工具
  • 用以操作文本的工具
  • 用以管理进程的工具

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

2、shell

Linux shell是个交互式工具。它为用户提供了启动程序、管理文件系统上的文件以及管理运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell的交互部分。它允许你输入文本命令,之后将解释命令并在内核中执行。
shell包含了一组内置命令,可以用这些命令来完成一些操作,如复制文件、移动文件、重命名文件以及显示和终止系统上正在运行的程序。shell也允许你在命令行提示符中输入程序的名称,它会将程序的名称传递给内核以启动它。
也可以将shell命令放入文件中作为程序执行。这些文件被称为shell脚本。在命令行上执行的任何命令都可放进一个shell脚本中作为一组命令执行。
在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更有利于创建脚本,有些更有利于管理进程。所有Linux发行版默认的shell基本上都是bash shell

Linux桌面环境

Linux一直都以可用多种方式来完成工作而声明在外。在图形化桌面上更是如此。Linux有各种图形化桌面可供选择。

1、X Window系统

有两项基本组件能决定你的视频环境:显卡和显示器。要在电脑上显示绚丽的画面,Linux软件就得知道如何来连接它们。X Window软件是图形显示的核心元素。
X Window软件是直接和PC上的显卡以及显示器一起工作的底层软件。它控制着Linux程序如何在电脑上显示出绚丽的窗口和画面。
核心的X Window软件可以产生图形化显示环境,但仅此而已。它没有桌面环境供用户操作文件或是开启程序。

2、KDE桌面

KDE(K Desktop Environment,K桌面环境)最初于1996年作为开源项目发布。它会生成一个类似Microsoft Windows的图形化桌面环境。KDE桌面允许你把应用程序图标和文件图标放置在桌面的特定位置上。单击应用程序图标,Linux系统就会运行该应用程序。单击文件图标,KDE桌面就会确定使用哪种应用程序来处理该文件。

3、GNOME桌面

GNOME(The GNU Network Object Model Environment,GNU网络对象模型环境)是另一个流行的Linux桌面环境。GNOME于1999年首次发布,现已是许多Linux发行版的默认桌面环境。GNOME不再沿用Microsoft Windows的标准外观,但它集成了许多Windows用户习惯的功能:

  • 一块放置图标的桌面区域
  • 两个面板区域
  • 拖放功能
4、其他桌面

图形化桌面环境的弊端在于它们要占用相当一部分系统资源。有一些轻量级Linux图形化桌面环境。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值