摘要
本章提供有关各种软件包、虚拟控制台和键盘布局的信息。 讨论诸如 bash、cron 和 logrotate 等软件组件,因为在最后的发行周期中已对这些组件进行了更改或增强。 即使这些组件很小或者被认为不太重要,但是用户可能希望更改它们的默认行为,因为这些组件通常是与系统紧密结合的。 本章的最后是有关语言和国家/地区特定设置(I18N 和 L10N)的内容。
程序 bash、cron、logrotate、locate、ulimit 和 free,以及文件 resolv.conf 对于系统管理员和许多用户是非常重要的。 手册页和信息页是命令相关信息的两个有用来源,但是它们并不是始终可用的。 GNU Emacs 是一种流行的并且非常容易配置的文本编辑器。
Bash 是默认的系统 shell。在用作登录 shell 时,它将读取几个初始化文件。 Bash 按照这些文件在列表中出现的顺序处理它们:
/etc/profile
~/.配置文件
/etc/bash.bashrc
~/.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 文件将个人调整复制过来。
如果要在预定义的时间在后台定期自动运行命令,请使用 cron 工具。cron 是由特殊格式的时间表驱动的。这些表有一部分是系统附带的,但如有需要,用户可以自行编写表。
cron 表位于 /var/spool/cron/tabs 中。 /etc/crontab 用作系统范围的 cron 表。 输入在时间表之后且在此命令之前运行此命令的用户名。 在例 19.1 “/etc/crontab 中的项”中,输入的是 root。 位于 /etc/cron.d 中的包特定的表具有相同的格式。 请参见 cron 手册页 (man cron)。
不能通过调用命令 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) 中运行一次。 这样可以确保在适当的时间运行可能被忽略的进程。
要运行 hourly、daily 或在自定义时间运行其他周期性维护脚本,请去除通常使用 /etc/crontab 项的时戳文件(请参见例 19.2 “/etc/crontab:去除时戳文件”,它去除了每个整点之前的 hourly 和每天早上 2:14 的 daily 等)。
例 19.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
或者,在 /etc/sysconfig/cron 中将 DAILY_TIME 设置为 cron.daily 应该启动的时间。MAX_NOT_RUN 的设置确保日常作业被触发运行,即使用户在很长时间里没有在指定的 DAILY_TIME 打开计算机。MAX_NOT_RUN 的最大值为 14 天。
为了清楚起见,将日常系统维护作业分布在多个脚本中。这些脚本包含在包 aaa_base 中。 例如,/etc/cron.daily 中包含组件 suse.de-backup-rpmdb、suse.de-clean-tmp 或 suse.de-cron-local。
有许多系统服务(守护程序)以及内核本身定期将系统状态和特定事件记录到日志文件中。 这样,管理员可以定期检查系统在某一时刻的状态,识别错误或故障功能,并精确诊断它们。这些日志文件通常储存在 FHS 指定的 /var/log 中,文件大小每天都会增长。 logrotate 包可以帮助控制这些文件的增长。
用文件 /etc/logrotate.conf 配置 logrotate。特别地,include 规范主要配置了其他要读取的文件。 在 /etc/logrotate.d 中产生日志文件、安装的各个配置文件的程序。例如,随包 apache2(/etc/logrotate.d/apache2) 和 syslogd(/etc/logrotate.d/syslog) 一起提供的文件。
例 19.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 每天对其进行调用。
locate 是一个用于查找文件的命令,它不包括在已安装软件的标准范围内。 如果需要,请安装包 findutils-locate。updatedb 进程将在每天晚上或引导系统约 15 分钟后自动启动。
使用 ulimit (user limits) 命令,可以对系统资源的使用设置限制并将这些信息显示出来。ulimit 尤其适用于限制应用程序可用的内存。 使用此命令,可以防止某个应用程序自己占用太多内存,这可能导致系统停顿。
可以对 ulimit 使用多个选项。 要限制使用内存,请使用 表 19.1 “ulimit:为用户设置资源” 中列出的选项。
可以在 /etc/profile 中创建系统范围的项。 在这里可以创建编程人员进行调试所需的核心文件。 普通用户不能增加系统管理员在 /etc/profile 中指定的值,但可以在 ~/.bashrc 中进行特殊输入。
例 19.4. ulimit:~/.bashrc 中的设置
# Limits of physical memory: ulimit -m 98304 # Limits of virtual memory: ulimit -v 98304
必须以 KB 为单位指定内存大小。 有关详细信息,请参见 man bash。
![]() | 重要 |
|---|---|
并非所有 shell 都支持 ulimit 指令。 如果您依赖于这些限制的内含设置,则 PAM(例如 | |
如果您的目的是查看当前使用了多少 RAM,则 free 命令可能会令人产生误解。 /proc/meminfo 中提供了此信息。 目前,使用 Linux 等现代操作系统的用户实际上无需过多地担心内存。 可用 RAM 的概念可追溯到统一内存管理之前。 可用内存不是好的内存这种说法非常适用于 Linux。 因此,Linux 一直在平衡超速缓存方面下功夫,不允许实际上存在可用或未使用的内存。
内核基本上不直接管理任何应用程序或用户数据。 而是在一个页超速缓存中管理应用程序和用户数据。 如果内存不足,它的某些部分会被写入交换分区或文件中,借助于 mmap 命令,可以最先从这些交换分区或文件中读取这些部分(请参见 man mmap)。
此外,内核中还包含其他超速缓存,如 slab 超速缓存,其中储存着用于网络访问的超速缓存。 这也许能够解释 /proc/meminfo 中计数器之间的差异。 通过 /proc/slabinfo 可以访问大多数(但并非全部)slab 超速缓存。
系统通过文件 /etc/resolv.conf 处理域名解析。
此文件仅由脚本 /sbin/modify_resolvconf 进行更新,任何其他程序都没有直接修改 /etc/resolv.conf 的权限。 只有实施这条规则才能确保系统的网络配置和相关文件保持一致。
对于某些 GNU 应用程序(如 tar),已不再保留手册页。 对于这些命令,可使用 --help 选项快速查看信息页,其中提供更多深入的说明。info 是 GNU 的超文本系统。 通过输入 infoinfo 可以看到此系统的介绍。 通过输入 emacs -f Info 可使用 Emacs 查看信息页,也可以在控制台中使用 info 直接查看信息页。 还可以使用 tkinfo、xinfo 或 帮助系统来查看信息页。
GNU Emacs 是一个复杂的工作环境。 下面几节介绍当启动 GNU Emacs 时处理的配置文件。 有关详细信息,请参见 http://www.gnu.org/software/emacs/。
启动时,Emacs 读取包含用户、系统管理员和经销商的设置的多个文件以进行自定义或预配置。 初始化文件 ~/.emacs 被安装到 /etc/skel 中各个用户的主目录中。 .emacs 又会读取文件 /etc/skel/.gnu-emacs。 要自定义程序,请(通过 cp /etc/skel/.gnu-emacs ~/.gnu-emacs)将 .gnu-emacs 复制到用户主目录并在那里进行所需的设置。
.gnu-emacs 将文件 ~/.gnu-emacs-custom 定义为 custom-file。 如果用户通过 Emacs 中的 customize 选项进行设置,则这些设置将保存到 ~/.gnu-emacs-custom 中。
通过 SUSE® Linux Enterprise,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:info 格式的联机文档。
emacs-el:Emacs Lisp 中未编译的库文件。运行时不需要这些库文件。
如果需要,可安装众多附加软件包:emacs-auctex(用于 LaTeX)、psgml(用于 SGML 和 XML)、gnuserv(用于客户机和服务器操作)以及其他。