2.3. UNIX 系统中的主要服务

本节介绍一些更重要的 UNIX 服务,但没有详细说明。 它们将在后面的章节中更详细地描述。

2.3.1. init

UNIX 系统中最重要的一项服务是由 init 提供的。init 作为每个 UNIX 系统的第一个进程启动,这是内核在启动时做的最后一件事。 当 init 启动时,它会继续启动过程,执行各种启动任务(检查和挂载文件系统、启动守护进程等)。

init 执行的具体任务列表取决于它是哪种变体; 有几种可供选择。init 通常提供单用户模式的概念,在这种模式下,没有人可以登录,root 用户在控制台使用 shell; 通常的模式称为多用户模式。 有些变体将其概括为运行级别; 单用户模式和多用户模式被认为是两个运行级别,并且还可以有额外的运行级别,例如,在控制台上运行 X。

Linux 允许最多 10 个运行级别,0-9,但通常只有其中一些是默认定义的。 运行级别 0 定义为“系统停止”。 运行级别 1 定义为“单用户模式”。 运行级别 3 定义为“多用户”,因为它是系统在正常日常条件下启动进入的运行级别。 运行级别 5 通常与 3 相同,只是还会启动 GUI。 运行级别 6 定义为“系统重启”。 其他运行级别取决于您的特定发行版如何定义它们,并且它们在不同的发行版之间差异很大。 查看以下内容/etc/inittab通常会给出一些关于预定义运行级别是什么以及它们被定义为什么的提示。

在正常操作中,init 确保 getty 正在工作(以允许用户登录)并收养孤立进程(父进程已死的进程;在 UNIX 中,所有进程必须在单个树中,因此必须收养孤立进程)。

当系统关闭时,init 负责杀死所有其他进程、卸载所有文件系统并停止处理器,以及它被配置为执行的任何其他操作。

2.3.2. 终端登录

来自终端(通过串行线路)和控制台(在未运行 X 时)的登录由 getty 程序提供。init 为每个允许登录的终端启动一个单独的 getty 实例。getty 读取用户名并运行 login 程序,该程序读取密码。 如果用户名和密码正确,login 运行 shell。 当 shell 终止时,即用户注销时,或者当 login 因用户名和密码不匹配而终止时,init 会注意到这一点并启动一个新的 getty 实例。 内核没有登录的概念,这一切都由系统程序处理。

2.3.3. Syslog

内核和许多系统程序会产生错误、警告和其他消息。 通常重要的是,这些消息可以在以后甚至很久以后查看,因此应该将它们写入文件。 执行此操作的程序是 syslog。 可以将其配置为根据编写者或重要程度将消息分类到不同的文件中。 例如,内核消息通常与来自其他来源的消息定向到不同的文件,因为内核消息通常更重要,需要定期读取以发现问题。

第 15 章 将提供更多关于此内容的信息。

2.3.4. 定期命令执行:cronat

用户和系统管理员通常都需要定期运行命令。 例如,系统管理员可能希望运行命令来清理包含临时文件的目录(/tmp/var/tmp)中的旧文件,以防止磁盘被填满,因为并非所有程序都能正确地自行清理。

cron 服务设置为执行此操作。 每个用户都可以拥有一个crontab文件,在其中列出她希望执行的命令以及应执行的时间。cron 守护进程负责在指定时间启动命令。

at 服务类似于 cron,但它是一次性的:命令在给定时间执行,但不会重复执行。

我们将在后面更详细地介绍这一点。 有关更深入的信息,请参阅手册页 cron(1)、crontab(1)、crontab(5)、at(1) 和 atd(8)。

第 13 章 将涵盖这一点。

2.3.5. 图形用户界面

UNIX 和 Linux 没有将用户界面集成到内核中; 相反,它们让用户级程序来实现它。 这适用于文本模式和图形环境。

这种安排使系统更灵活,但缺点是很容易为每个程序实现不同的用户界面,从而使系统更难学习。

Linux 主要使用的图形环境称为 X Window 系统(简称 X)。 X 也没有实现用户界面; 它仅实现窗口系统,即可以用来实现图形用户界面的工具。 一些流行的窗口管理器是:fvwm、icewm、blackbox 和 windowmaker。 还有两个流行的桌面管理器,KDE 和 Gnome。

2.3.6. 网络

网络是将两台或多台计算机连接起来,以便它们可以相互通信的行为。 连接和通信的实际方法稍微复杂,但最终结果非常有用。

UNIX 操作系统具有许多网络功能。 大多数基本服务(文件系统、打印、备份等)都可以通过网络完成。 这可以使系统管理更容易,因为它允许集中管理,同时仍然可以从微型计算和分布式计算中获得好处,例如更低的成本和更好的容错能力。

但是,本书仅粗略地介绍了网络; 有关更多信息,包括网络如何运行的基本描述,请参阅Linux 网络管理员指南 http://www.tldp.org/LDP/nag2/index.html

2.3.7. 网络登录

网络登录的工作方式与正常登录略有不同。 对于每个通过网络登录的人,都有一个单独的虚拟网络连接,并且根据可用带宽,可以有任意数量的连接。 因此,不可能为每个可能的虚拟连接运行一个单独的 getty。 也有几种不同的通过网络登录的方式,telnetssh 是 TCP/IP 网络中的主要方式。

如今,许多 Linux 系统管理员认为 telnetrlogin 不安全,更喜欢 ssh,即“安全 shell”,它加密通过网络的流量,从而大大降低了恶意用户“嗅探”您的连接并获取用户名和密码等敏感数据的可能性。 强烈建议您使用 ssh 而不是 telnetrlogin

网络登录没有成群的 getty,而是每个登录方式(telnetssh 有单独的守护进程)都有一个守护进程,用于侦听所有传入的登录尝试。 当它注意到一个尝试时,它会启动自己的新实例来处理该单个尝试; 原始实例继续侦听其他尝试。 新实例的工作方式类似于 getty

2.3.8. 网络文件系统

使用网络服务可以完成的更有用的事情之一是通过网络文件系统共享文件。 根据您的网络,这可以通过网络文件系统 (NFS) 或通用 Internet 文件系统 (CIFS) 完成。 NFS 通常是基于“UNIX”的服务。 在 Linux 中,内核支持 NFS。 然而,CIFS 不是。 在 Linux 中,Samba http://www.samba.org 支持 CIFS。

通过网络文件系统,一台机器上的程序完成的任何文件操作都会通过网络发送到另一台计算机。 这会欺骗程序,使其认为另一台计算机上的所有文件实际上都在运行该程序的计算机上。 这使得信息共享非常简单,因为它不需要修改程序。

第 5.4 节 将更详细地介绍这一点。

2.3.9. 邮件

电子邮件是通过计算机进行通信的最流行的​​方法。 电子信件以特殊格式存储在文件中,并使用特殊的邮件程序来发送和读取信件。

每个用户都有一个收件箱(一种特殊格式的文件),其中存储所有新邮件。 当有人发送邮件时,邮件程序会找到接收者的邮箱并将信件附加到邮箱文件中。 如果接收者的邮箱在另一台机器上,则信件将被发送到另一台机器,该机器会将其以最佳方式传递到邮箱。

邮件系统由许多程序组成。 将邮件传递到本地或远程邮箱由一个程序(邮件传输代理 (MTA),例如,sendmailpostfix)完成,而用户使用的程序有很多种(邮件用户代理 (MUA),例如,pineevolution。 邮箱通常存储在/var/spool/mail直到用户的 MUA 检索它们。

有关设置和运行邮件服务的更多信息,您可以阅读位于 http://www.tldp.org/HOWTO/Mail-Administrator-HOWTO.html 的邮件管理员 HOWTO,或访问 sendmail 或 postfix 的网站。http://www.sendmail.org/http://www.postfix.org/

2.3.10. 打印

一次只能有一个人使用打印机,但不共享打印机在用户之间是不经济的。 因此,打印机由实现打印队列的软件管理:所有打印作业都放入队列中,并且每当打印机完成一项作业时,下一个作业会自动发送到打印机。 这减轻了用户组织打印队列和争夺打印机控制权的麻烦。 相反,他们在打印机形成一个新的队列,等待他们的打印输出,因为似乎没有人能够让队列软件确切地知道任何人的打印输出何时真正完成。 这极大地促进了办公室内部的社交关系。

打印队列软件还会将打印输出假脱机到磁盘上,即在作业在队列中时,文本会保存在文件中。 这允许应用程序程序快速将打印作业输出到打印队列软件; 应用程序不必等待作业实际打印完成才能继续。 这非常方便,因为它允许您打印出一个版本,而不必等待它打印出来才能制作一个完全修订的新版本。

您可以参考位于 http://www.tldp.org/HOWTO/Printing-HOWTO/index.html 的 Printing-HOWTO,以获得有关设置打印机的更多帮助。

2.3.11. 文件系统布局

文件系统分为许多部分; 通常沿着根文件系统的思路划分,包括/bin , /lib , /etc , /dev,以及其他一些; 一个/usr包含程序和不变数据的文件系统;/var包含更改数据(例如日志文件)的文件系统; 以及一个/home用于每个人的个人文件。 根据硬件配置和系统管理员的决定,划分可能会有所不同; 甚至可以全部在一个文件系统中。

第 3 章 详细描述了文件系统布局; 文件系统层次结构标准 . 更详细地介绍了它。 这可以在网上找到: http://www.pathname.com/fhs/