学习目标:从认识Linux命令行基础开始,一直到写出自己的shell脚本
什么是Linux
一个linux系统可以划分为以下四部分:
- Linux内核
- GNU工具
- 图形化桌面环境
- 应用软件
Linux内核
Linux内核控制着计算机系统上的所有硬件和软件,有必要时分配硬件,并根据需要执行软件。内核主要负责以下四种功能:
-
系统内存管理:包括管理物理内存、创建和管理虚拟内存。
内核通过不断地在交换空间和实际的物理空间之间反复交换虚拟内存中的内容,以实现比物理内存更多的可用内存。
内存存储单元按组划分成很多块,这些块称为页面(Page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存,哪些页面被交换到存储磁盘上。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。 -
软件程序管理:管理运行在系统上的所有进程
内核创建了第一个进程(init进程)来启动系统上所有进程。党内和启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专门来存储该进程用到的数据和代码。
一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程,一般位于/etc/inittab或/etc/init.d中。将开机时启动或停止某个应用的脚本放在这个目录下。这些脚本通过/etc/rcX.d目录下的入口启动,X表示运行级。
Linux操作系统有5个启动运行级,标准启动级为3;而运行级1为单用户模式;运行级5可以允许用户运行图形化窗口系统界面。 -
硬件设备管理:管理Linux系统与硬件之间通信,即设备驱动管理。
内核使用驱动的两种方法:编译进内核驱动代码和可插入内核的设备驱动模块。LInux系统将硬件分成三种类别的设备文件:字符型设备文件、块设备文件、网络设备文件。
字符型设备文件指处理文件时每次只能处理一个字符的设备;块设备文件是指处理数据时每次能处理大块数据的设备;网络设备文件指采用数据发送和接收数据的设备。Linux为系统上的每个设备都创建一种称为节点(node)的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识主设备组下的某个特定设备。 -
文件系统管理:支持的不同类型文件系统操作
Linux内核支持不同类型的文件系统从硬盘中读写数据。以下为Linux系统支持的标准文件系统:
Linux内核采用虚拟文件系统(VFS)作为和每个文件系统交互的接口。这为Linux内核使用任何类型文件系统通信提供了一个标准接口。当每个文件系统都被挂载和使用时,VFS将信息都缓存到内存中。
GUN工具
除了由内核控制硬件设备外,操作系统还需要工具来执行一些标准功能,比如控制文件和程序。GUN组织开发的一套完整的Unix工具可以运行Linux内核,二者的结合形成了Linux系统。
核心GNU工具
Linux系统使用的核心工具为CoreUtils软件包,它由三部分组成:用以处理文件的工具、用以操作文本的工具、用以管理进程的工具。
Shell
GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符,它是shell负责交互的部分。它允许用户输入文本命令,然后解释命令,并在内核中运行。
shell中包含内部命令,可以完成诸如复制文件、移动文件、重命名文件等基础操作,shell允许在命令行提示符中输入程序的名称,它会将程序名传递给内核以启动它。当将多个shell命令放入到文件中作为程序执行,这些文件就被称作shell脚本。在命令行上执行的任何命令都可放进一个shell脚本中作为一组命令执行。
Linux shell有多种不同的类型 ,Linux发行版的默认shell是Bash shell,它由GNU项目开发,被当做标准Unix shell的替代品。其他常见的shell如下:
Linux桌面环境
Linux图形化桌面环境为用户提供图形化界面,主流的桌面有:X Windows系统、KED桌面、GNOME桌面、Unity桌面等。
小结
Linux内核是系统的核心,控制着内存、程序和硬件之间的交互。GNU工具也是Linux系统中的一个重要部分,Linux shell是GNU核心工具集的一部分。