第 10 章 SUSE Linux 的特殊功能

目录

10.1. 特殊软件包的相关信息
10.2. 虚拟控制台
10.3. 键盘映射
10.4. 语言和国家/地区特定的设置

摘要

本章提供有关各种软件包、虚拟控制台和键盘布局的信息。讨论诸如 bashcronlogrotate 等软件组件,因为在最后的发行周期中已对这些组件进行了更改或增强。即使这些组件很小或者被认为不太重要,但是用户可能希望更改它们的默认行为,因为这些组件通常是与系统紧密结合的。本章的最后是有关语言和国家/地区特定设置(I18N 和 L10N)的内容。


10.1. 特殊软件包的相关信息

程序 bashcronlogrotatelocateulimitfree,以及文件 resolv.conf 对于系统管理员和许多用户是非常重要的。手册页和信息页是命令相关信息的两个有用来源,但是它们并不是始终可用的。GNU Emacs 是一种流行的并且非常容易配置的文本编辑器。

10.1.1. 包 bash 和 /etc/profile

Bash 是 SUSE Linux 中的默认 shell。在用作登录 shell 时,它将读取几个初始化文件。Bash 按照这些文件在列表中出现的顺序处理它们。

  1. /etc/profile

  2. ~/.profile

  3. /etc/bash.bashrc

  4. ~/.bashrc

用户可以在 ~/.profile~/.bashrc 中创建自定义设置。要确保正确处理这些文件,需要将基本设置从 /etc/skel/.profile/etc/skel/.bashrc 复制到用户的主目录中。建议在更新后从 /etc/skel 复制这些设置。执行以下 shell 命令可防止个人调整的损失:

mv ~/.bashrc ~/.bashrc.old
cp /etc/skel/.bashrc ~/.bashrc
mv ~/.profile ~/.profile.old
cp /etc/skel/.profile ~/.profile

然后从 *.old 文件将个人调整复制过来。

10.1.2. cron 包

如果希望按预定义的时间在后台定期自动运行命令,通常使用 cron 这一工具。cron 由特定格式的时间表驱动。这些表有一部分是系统附带的,但如有需要,用户可以自行编写表。

cron 表位于 /var/spool/cron/tabs 中。/etc/crontab 用作系统范围的 cron 表。输入在时间表之后且在此命令之前运行此命令的用户名。在例 10.1 “/etc/crontab 中的项”中,输入的是 root。位于 /etc/cron.d 中的包特定的表具有相同的格式。请参见 cron 手册页 (man cron)。

例 10.1. /etc/crontab 中的项

1-59/5 * * * *   root   test -x /usr/sbin/atrun && /usr/sbin/atrun

不能通过调用命令 crontab -e 来编辑 /etc/crontab。必须直接将该文件装载到编辑器中,对其进行修改,然后保存。

许多包将 shell 脚本安装到目录 /etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly 中,它们的执行是由 /usr/lib/cron/run-crons 控制的。/usr/lib/cron/run-crons 每隔 15 分钟在主表 (/etc/crontab) 中运行一次。这样可以确保在适当的时间运行可能被忽略的进程。

要运行 hourlydaily 或在自定义时间运行其它周期性维护脚本,请去除通常使用 /etc/crontab 项的时戳文件(参见例 10.2 “/etc/crontab:去除时戳文件”,它去除了每个整点之前的 hourly 和每天早上 2:14 的 daily 等)。

例 10.2. /etc/crontab:去除时戳文件

59 *  * * *     root  rm -f /var/spool/cron/lastrun/cron.hourly
14 2  * * *     root  rm -f /var/spool/cron/lastrun/cron.daily
29 2  * * 6     root  rm -f /var/spool/cron/lastrun/cron.weekly
44 2  1 * *     root  rm -f /var/spool/cron/lastrun/cron.monthly

为了清楚起见,已经将日常系统维护作业分发给了多个脚本。这些脚本包含在包 aaa_base 中。例如,/etc/cron.daily 中包含组件 suse.de-backup-rpmdbsuse.de-clean-tmpsuse.de-cron-local

10.1.3. 日志文件:包 logrotate

有许多系统服务(守护程序)以及内核本身定期将系统状态和特定事件记录到日志文件中。这样,管理员可以定期检查系统在某一时刻的状态、识别错误或有故障的功能,然后精确地进行故障诊断。这些日志文件通常储存在 FHS 指定的 /var/log 中,文件大小每天都会增长。logrotate 包可以帮助控制这些文件的增长。

用文件 /etc/logrotate.conf 配置 logrotate。特别地,include 规范主要配置了其它要读取的文件。SUSE Linux 确保生成日志文件的程序在 /etc/logrotate.d 中安装单独的配置文件。例如,随包 apache2(/etc/logrotate.d/apache2) 和 syslogd(/etc/logrotate.d/syslog) 一起提供的程序。

例 10.3. /etc/logrotate.conf 的示例


# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp - we'll rotate them here
#/var/log/wtmp {
#    monthly
#    create 0664 root utmp
#    rotate 1
#}

# system-specific logs may be also be configured here.

通过 cron 控制 logrotate,并通过 /etc/cron.daily/logrotate 每天对其进行调用。

[Important]重要

使用 create 选项可以读取管理员在 /etc/permissions* 中进行的所有设置。确保没有因个人修改而引起的冲突。

10.1.4. locate 命令

locate 是一个用于查找文件的命令,它不包括在已安装软件的标准范围内。 如有必要,请安装包 find-locate。updatedb 进程将在每天晚上或引导系统约 15 分钟后自动启动。

10.1.5. ulimit 命令

使用 ulimit (user limits) 命令,可以对系统资源的使用设置限制并将这些信息显示出来。ulimit 尤其适用于限制应用程序可用的内存。使用此命令,可以防止某个应用程序自己占用太多内存,这可能导致系统停顿。

可以对 ulimit 使用多个选项。要限制使用内存,请使用 表 10.1 “ulimit:为用户设置资源” 中列出的选项。

表 10.1. ulimit:为用户设置资源

-m

物理内存的最大大小

-v

虚拟内存的最大大小

-s

堆栈的最大大小

-c

核心文件的最大大小

-a

显示限制设置

可以在 /etc/profile 中创建系统范围的项。在这里可以创建编程人员进行调试所需的核心文件。普通用户不能增加系统管理员在 /etc/profile 中指定的值,但可以在 ~/.bashrc 中进行特殊输入。

例 10.4. ulimit:~/.bashrc 中的设置

# Limits of physical memory:
ulimit -m 98304
 
# Limits of virtual memory:
ulimit -v 98304

必须以 KB 为单位指定内存大小。有关详细信息,请参见 man bash

[Important]重要

并非所有 shell 都支持 ulimit 指令。如果您依赖于这些限制的内含设置,则 PAM(例如 pam_limits)提供了全面的调整功能。

10.1.6. free 命令

如果您的目的是查看当前使用了多少 RAM,则 free 命令可能会令人产生误解。/proc/meminfo 中提供了此信息。目前,使用 Linux 等现代操作系统的用户实际上无需过多地担心内存。可用 RAM 的概念可追溯到统一内存管理之前。可用内存不是好的内存这种说法非常适用于 Linux。因此,Linux 一直在平衡超速缓存方面下功夫,不允许实际上存在可用或未使用的内存。

内核基本上不直接管理任何应用程序或用户数据。而是在一个页超速缓存中管理应用程序和用户数据。如果内存不足,它的某些部分会被写入交换分区或文件中,借助于 mmap 命令,可以最先从这些交换分区或文件中读取这些部分(请参见 man mmap)。

此外,内核中还包含其它超速缓存,如 slab 超速缓存,其中储存着用于网络访问的超速缓存。这也许能够解释 /proc/meminfo 中计数器之间的差异。通过 /proc/slabinfo 可以访问大多数(但并非全部)slab 超速缓存。

10.1.7. 文件 /etc/resolv.conf

系统通过文件 /etc/resolv.conf 处理域名解析。请参见 第 20 章 域名系统

此文件仅由脚本 /sbin/modify_resolvconf 进行更新,任何其它程序都没有直接修改 /etc/resolv.conf 的权限。只有实施这条规则才能确保系统的网络配置和相关文件保持一致。

10.1.8. 手册页和信息页

对于某些 GNU 应用程序(如 tar),已不再保留手册页。对于这些命令,可使用 --help 选项快速查看信息页,其中提供更多深入的说明。info 是 GNU 的超文本系统。通过输入 info info,就可以看到此系统的介绍。通过输入 emacs -f info 可使用 Emacs 查看信息页,也可以在控制台中使用 info 直接查看信息页。还可以使用 tkinfo、xinfo 或 SUSE 帮助系统来查看信息页。

10.1.9. GNU Emacs 的设置

GNU Emacs 是一个复杂的工作环境。下面几节介绍当启动 GNU Emacs 时处理的配置文件。有关详细信息,请参见 http://www.gnu.org/software/emacs/

启动时,Emacs 读取包含用户、系统管理员和经销商的设置的多个文件以进行自定义或预配置。初始化文件 ~/.emacs 被安装到 /etc/skel 中各个用户的主目录中。.emacs 又会读取文件 /etc/skel/.gnu-emacs。要自定义程序,请将 .gnu-emacs 复制到主目录(通过 cp /etc/skel/.gnu-emacs ~/.gnu-emacs)并在那里进行所需的设置。

.gnu-emacs 将文件 ~/.gnu-emacs-custom 定义为 custom-file。如果用户通过 Emacs 中的 customize 选项进行设置,则这些设置将保存到 ~/.gnu-emacs-custom 中。

通过 SUSE Linux,emacs 包将文件 site-start.el 安装在目录 /usr/share/emacs/site-lisp 中。文件 site-start.el 在初始化文件 ~/.emacs 之前进行装载。除其它作用之外,site-start.el 确保自动装载通过 Emacs 扩充包分发的特殊配置文件(如 psgml)。此类型的配置文件也位于 /usr/share/emacs/site-lisp 中,总是以 suse-start- 开头。本地系统管理员可以在 default.el 中指定整个系统范围的设置。

初始化文件下的 Emacs 信息文件中提供了有关这些文件的详细信息:info:/emacs/InitFile。此位置还提供了有关如何禁止装载这些文件(如果需要)的信息。

Emacs 的部件被分成多个包:

  • 基础包 emacs

  • emacs-x11(通常已安装):带有 X11 支持的程序。

  • emacs-nox不带 X11 支持的程序。

  • emacs-info:信息格式的联机文档。

  • emacs-el:Emacs Lisp 中未编译的库文件。运行时不需要这些库文件。

  • 如果需要,可以安装多个扩充包:emacs-auctex(用于 LaTeX)、psgml(用于 SGML 和 XML)、gnuserv(用于客户机和服务器操作)等。