摘要
本章首先提供有关各种软件包、虚拟控制台和键盘布局的信息。讨论诸如 bash、cron 和 logrotate 等软件组件,因为在最后的发行周期中已对这些组件进行了更改或增强。即使这些组件很小或者被认为不太重要,但是用户可能希望更改它们的默认行为,因为这些组件通常是与系统紧密结合的。 本章的最后是有关语言和国家/地区特定设置(I18N 和 L10N)的内容。
程序 bash、cron、logrotate、locate、ulimit 和 free 对于系统管理员和许多用户是非常重要的。手册页和信息页是命令相关信息的两个有用来源,但是它们并不是始终可用的。 GNU Emacs 是一种流行的并且非常容易配置的文本编辑器。
Bash 是默认的系统 shell。在用作登录 shell 时,它将读取几个初始化文件。 Bash 按照这些文件在列表中出现的顺序处理它们:
/etc/profile
~/.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 表。 输入在时间表之后且在此命令之前运行此命令的用户名。 在例 11.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 项的时戳文件(请参见例 11.2 “/etc/crontab:删除时戳文件”,它删除了每个整点之前的 hourly 和每天凌晨 2:14 的 daily 等)。
例 11.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) 一起提供的文件。
例 11.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 每天对其进行调用。
使用 ulimit(用户限制)命令可以为系统资源的使用设置限制并使其显示出来。ulimit 对于限制应用程序的可用内存尤其有用。设置可用内存限制后,可以防止应用程序占用过多系统资源,而导致操作系统变慢甚至挂起。
可以对 ulimit 使用多个选项。 要限制使用内存,请使用 表 11.1 “ulimit:为用户设置资源” 中列出的选项。
可以在 /etc/profile 中创建系统范围的项。 在这里可以创建核心文件(编程人员调试时需要使用)。普通用户不能增加系统管理员在 /etc/profile 中指定的值,但可以在 ~/.bashrc 中进行特殊输入。
例 11.4. ulimit:~/.bashrc 中的设置
# Limits maximum resident set size (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 可以访问大多数(但并非全部)上述缓存。
对于某些 GNU 应用程序(如 tar),已不再保留手册页。 对于这些命令,可使用 --help 选项快速查看信息页,其中提供更多深入的描述。info 是 GNU 的超文本系统。通过输入 infoinfo 可以看到此系统的介绍。 通过输入 emacs -f Info 可使用 Emacs 查看信息页,也可以在控制台中使用 info 直接查看信息页。 还可以使用 tkinfo、xinfo 或帮助系统来查看信息页。
使用 man man_page 通常可以显示即时读取的手册页。现在,如果在不同部分中存在具有相同名称的手册页,则 man 会提示用户应显示部分所在的页面。然后由用户键入相应的部分作为回答。
如果要返回到上一个行为,请在外壳初始化文件(如 ~/.bashrc)中设置 MAN_POSIXLY_CORRECT=1。
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 Desktop,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(客户端和服务器操作)等。