Unix 指南/Unix 类系统
许多 服务器 和一些 工作站 上安装的 操作系统 是 Unix 类系统。但什么是 像 Unix 一样?在这本书中,一个 Unix 类系统是指类似于 *BSD,GNU/Linux,Solaris 和 原始 Unix 的系统。如今,Mac OS X 也被认为是 Unix 类系统。
与普通计算机用户熟悉的 (点击式) (图形用户界面) 不同,Unix 上的工作通常以基于文本的方式完成,通过所谓的 (命令行 Shell)。
与 (单用户) 操作系统不同,单用户操作系统仅允许一个人在特定时间使用计算机,Unix 是一个多用户系统,允许多个用户同时访问计算机。通常,这是通过让用户 (远程) 通过数字网络访问系统来实现的。
无论是否 (远程) 访问,用户都需要一个 (用户帐户) 才能获得系统访问权限;用于计费、安全、日志记录和资源管理。
由于每个特定的用户帐户对系统及其资源的控制程度不同,因此能够验证给定用户的真实身份至关重要,因此存在一种方法可以将每个用户帐户 (用户名) 与相应的 (密码) 进行验证;在一个称为 (登录) 的过程中。
所有 Unix 类系统都是相似的。与许多服务器操作系统一样,Unix 类系统可以同时托管多个用户和程序。某些功能特定于 Unix 类系统。Unix 类系统提供了一个通用的 命令行界面,称为 Shell。它们还为 C 语言 提供了一个通用的编程接口。后一点使得大多数 Unix 类系统能够运行相同的 应用程序软件 和 桌面环境。
Unix 在程序员中很受欢迎,原因有很多。它流行的一个主要原因是其构建块方法,其中一系列简单的工具可以串联起来以产生非常复杂的结果。另一个原因是“一切皆文件”的理念,这意味着可以对不同的文件类型(目录与普通文件)、硬件设备,甚至系统进程执行一套标准化的操作和功能。
Shell 是 Unix 类系统独有的程序。它允许您键入命令来启动其他程序。
当您通过纯文本终端登录到系统时,Unix 会为您提供一个登录 Shell。如果您的系统具有 图形用户界面,例如 GNOME,KDE,或任何使用 X 窗口系统 的界面,您可以通过一个称为控制台模拟器或终端模拟器的程序访问 Shell。这模拟了 Shell 运行所需的纯文本终端。
不幸的是,Shell 和命令很难学习。此外,许多命令需要“参数”才能正常工作。例如,rm 命令用于删除文件,它需要一个或多个命名要删除文件的“参数”。本书中有一章 解释/Shell 提示符 介绍了 Shell 及其许多功能。
可以通过将 Shell 命令保存到名为 Shell 脚本 的文本文件中来自动化任务。例如,Shell 脚本用于启动系统。
Unix Shell 是 Unix 类系统独有的。实际上,Unix 有多个 Shell 可用。这些 Shell 以不同的方式扩展其功能。对于“Bourne 兼容” Shell,维基教科书 Bourne Shell 脚本 对它们进行了描述。大多数 Shell 脚本都是用于 Bourne 兼容 Shell 的。
Unix 是流行的 C 语言 的起源。计算机上的每个程序都链接到 C 库,该库提供了基本的系统功能,包括对内核的访问。即使应用程序是用另一种语言编写的,比如 C++,它仍然链接到 C 库。像 perl 这样的解释语言需要链接到 C 库的 perl 解释器。
对 C 的依赖可能是一个缺点。大多数 Unix 类内核完全用 C 编写;最常见的程序使用 C、C++ 或 Objective-C。很难用另一种语言(如 Fortran)向这些程序添加代码。相反,一些非 Unix 系统允许不同的编程语言更容易地交互。
本书不介绍如何用 C 编程;这是书 Programming:C 的工作。但是,本书的计划补充部分将描述如何构建和运行 Unix 程序,当您获得它们的 C 源代码时。
每个 Unix 类系统都有一个 内核。这个程序控制着计算机 硬件。
系统上的所有其他程序都是 用户空间 的一部分,这意味着在内核之外。内核在所有正在运行的用户空间程序之间共享系统。要使用键盘、网络连接或硬件的其他部分,用户空间程序必须使用 系统调用 联系内核。内核允许多个程序安全地共享硬件。它还将程序切换进出 处理器;因此它是一个“多任务”内核。
例如,像 Apache 这样的 Web 服务器,可以通过内核同时与多个 Web 浏览器建立多个网络连接。同一台计算机也可以运行其他服务器程序。作为另一个例子,桌面系统上的用户(例如,使用 GNOME、KDE 或 Xfce)可以同时打开多个窗口,其中包含文件管理器、文字处理器和游戏。当文件管理器复制文件,文字处理器打印文档时,用户可以同时玩一个俄罗斯方块克隆。
如今,一个非常流行的内核是 Linux。Linux 被认为是 免费 和 开源 的;即使 Linux 运行着为数百万用户提供服务的服务器,也没有许可费。Linux 通常与 GNU 结合起来,形成类似 UNIX 的操作系统 GNU/Linux(尽管在某些情况下它没有与 GNU 结合使用)。因此,家庭用户获得类似 Unix 系统的简单方法是安装包含友好的桌面的 GNU/Linux 发行版。
当我们想要配置网络连接、存储系统或硬件的其他部分时,我们通常必须使用专门的实用程序来配置正在运行的内核。本书中描述了其中的一些程序。
本书的目的是保持 中立观点。因此,本书没有声称 Unix 始终是任何任务的最佳选择。它会提到 Unix 类系统的优缺点。