15. 技巧与窍门

问:如何在没有 mangroff 的情况下格式化 man 手册页?
问:如何在文本模式下向后滚动
问:如何使电子邮件工作
问:Sendmail 在每个命令处暂停长达一分钟
问:如何启用和选择虚拟控制台
问:如何设置时区
问:core 文件是什么?
问:如何启用或禁用核心转储
问:如何将键盘重新映射为英国、法语等
问:如何使数字锁定键默认开启
问:如何设置(或重置)初始终端颜色
问:如何拥有超过 128Mb 的交换空间

问:如何在没有 mangroff 的情况下格式化 Man 手册页?

答:man2html 程序将 groff 文本转换为 HTML,您可以使用 Web 浏览器查看它。man2html 程序以及许多类似的程序在 Web 上可用。使用您最喜欢的搜索引擎查找它们。

未格式化的手册页存储在以下子目录中/usr/man, /usr/local/man以及其他地方。

如果您想查看文本,请使用 nroffless。这两个程序都有 MSDOS 版本,并且也提供 man 宏包的实现。一个例子是

 $ nroff -man /usr/man/man1/ls.1 | less 

如果您知道在哪里可以找到 man 宏的一个好的实现,而无需安装 groff,请告知 FAQ 维护者。

如果手册页文件名以.gz结尾,那么您需要在使用 gzip -dgunzip 格式化之前解压缩它。一个单行示例是

 $ gzip -dc /usr/man/man1/ls.1.gz | nroff -man | less 

问:如何在文本模式下向后滚动

答:使用默认的美国键盘映射,您可以将 ShiftPgUpPgDn 键一起使用。(灰色的那些,而不是数字小键盘上的那些。)对于其他键盘映射,请查看/usr/lib/keytables。您可以将 ScrollUpScrollDown 键重新映射为您喜欢的任何键。

screen 程序,http://vector.co.jp/vpack/browse/person/an010455.html 提供可搜索的滚动缓冲区以及拍摄文本模式屏幕“快照”的能力。

最近的内核具有 VGA 控制台驱动程序,可以使用显著更多的内存进行回滚,前提是显卡可以实际处理 64 kb 的显存。将以下行添加到文件开头

 #define VGA_CAN_DO_64B 

drivers/video/vgacon.cdrivers/video/vgacon.c。此功能可能成为未来内核中的标准设置。如果在内核中也启用了视频帧缓冲区,则此设置可能不会影响缓冲。

在较旧的内核中,回滚量是固定的,因为它使用显存来存储回滚文本。您可以通过减少 VC 的总数来在每个虚拟控制台中获得更多的回滚。请参阅linux/tty.h.

[Chris Karakas]

问:如何使电子邮件工作

答:对于通过 SMTP(简单邮件传输协议)发送邮件以及从 ISP 的 POP(邮局协议)服务器接收邮件,您可以使用像 Netscape Communicator 或 KDE kmail 这样的桌面客户端。您需要在相应应用程序的首选项中输入 SMTP 和 POP 服务器的名称,以及您的电子邮件地址(例如,username@example.com)和您的拨号密码。同样适用于 Usenet 新闻。在您的新闻客户端的首选项部分输入 NNTP(网络新闻传输协议)服务器的名称。您可能还需要提供 ISP 的主域名服务器和辅助域名服务器的 IP 地址。

如果您有像 SendmailSmailqmailExim 这样的传统 MTA(邮件传输代理),您需要按照每个软件包中的说明进行操作。基本上,配置包括确定哪台主机,无论是在您的本地 LAN 上还是通过拨号 Internet,是“智能主机”(如果您使用 SMTP)。如果您使用较旧的 UUCP 协议,那么您需要查阅配置 UUCP 的说明,并确保您的 ISP 系统配置为将邮件中继给您。

关于 Internet 托管以及一般新闻和电子邮件的信息,可在 Usenet 新闻组 news.announce.newusers 中找到,这些 FAQ 也存档在 ftp://rtfm.mit.edu/pub/usenet/

问:Sendmail 在每个命令处暂停长达一分钟

答:确保 Sendmail 可以将您的主机名解析为有效的(即可解析的)域名地址。如果您未连接到 Internet,或者具有动态 IP 地址的拨号连接,请将完全限定域名添加到/etc/hosts文件,除了基本主机名之外;例如,如果主机名是bilbo并且域名是bag-end.com:

 192.168.0.1 bilbo.bag-end.com bilbo 

并确保/etc/host.conf/etc/resolv.conf文件包含以下行

 order hosts,bind 

Caution请勿更改localhost中的条目/etc/hosts,因为许多程序都依赖它进行内部消息传递。

Sendmail 在解析域名地址时会考虑许多因素。这些因素统称为 sendmail 术语中的“规则集”。该程序要求域名地址是规范的,甚至看起来是规范的。在上面的例子中,bilbo.(注意句点)与bilbo.bag-end.com的效果一样好。此修改和其他修改主要适用于最新版本。

在 8.7 版本之前,sendmail 要求 FQDN 首先出现在/etc/hosts条目中。这是由于信封地址伪装选项的变化。请查阅 sendmail 文档。

如果您有一个用于本地子网的域名服务器,请确保“.”指的是服务器机器上的 SOA 记录,并且反向查找(通过使用 nslookup 检查)适用于子网上的所有机器。

最后,FEATURE配置宏选项,如nodns, always_add_domainnocanonify,控制 sendmail 如何解释主机名。

文档 Sendmail: Installation and Operation Guide,包含在 Sendmail 源代码发行版的doc/子目录中,简要讨论了 Sendmail 如何解析 Internet 地址。Sendmail 源代码存档列表位于:http://www.sendmail.org/

[Chris Karakas]

问:如何启用和选择虚拟控制台

答:在文本模式下,按左 Alt-F1Alt-F12 选择控制台tty1tty12;右 Alt-F1 给出tty13等等。要退出 X,您必须按 Ctrl-Alt-F1 等;Alt-F5 或其他键将切换回来。

但是,如果您的系统不是 PC 兼容系统,请参阅下面的注释。

如果您想使用 VC 进行普通登录,则必须将其列在 /etc/inittab 中,该文件控制哪些终端和虚拟控制台具有登录提示。X Window 系统至少需要一个空闲的 VC 才能启动。

Note按键序列实际上是 CtrlMetaFN。在 PC 兼容系统上,左右 Alt 键实际上与键符号同义Meta_LMeta_R。如果绑定不同,您可以使用 xkeycaps 或类似的应用程序确定哪些键产生Meta_LMeta_R

[David Charlap]

问:如何设置时区

答:更改目录到/usr/lib/zoneinfo/。如果您没有此目录,请获取时区包。源代码可在 ftp://metalab.unc.edu/pub/Linux/system/admin/time/ 中找到。

然后创建一个名为localtime的符号链接,指向此目录(或子目录)中的一个文件,并创建一个名为posixrules的符号链接,指向localtime。例如

 $ ln -sf US/Mountain localtime
 $ ln -sf localtime posixrules 

此更改将立即生效 - 尝试 date

如果系统使用 Red Hat 风格的配置文件,则相应的时区信息文件为/usr/share/zoneinfo/etc/localtime.

tzsettzselect 的手册页描述了如何设置时区。某些程序识别TZ环境变量,但这不符合 POSIX 标准。

您还应该确保您的 Linux 内核时钟设置为正确的 GMT 时间。键入 date -u 并检查是否显示正确的 UTC 时间。请参阅 为什么计算机时间不正确?

问:什么是core文件?

答:当程序由于错误或违反操作系统或硬件的保护机制而意外终止时,会创建一个core文件。操作系统会终止程序并创建一个core文件,程序员可以使用该文件来找出问题所在。它包含程序死亡时所处状态的详细描述。

如果您想确定 core 文件来自哪个程序,请使用file命令,如下所示

 $ file core 

这将告诉您生成核心转储的程序的名称。您可能需要写信给程序的维护者,告诉他们他们的程序dumped core(核心转储)。

[Eric Hanchrow]

问:如何启用或禁用核心转储

答:通过在 bash 中使用 ulimit 命令,在 tcsh 中使用 limit 命令,或在 ksh 中使用 rlimit 命令。有关详细信息,请参阅相应的手册页。

此设置影响从 shell 运行的所有程序(直接或间接),而不是整个系统。

如果您希望默认启用或禁用所有进程的核心转储,您可以在linux/sched.h中更改默认设置。请参阅INIT_TASK的定义,并查看linux/resource.h.

。PAM 支持优化系统环境,包括允许用户使用的内存量。在某些发行版中,此参数可在/etc/security/limits.conf文件中配置。有关更多信息,请参阅 Linux 管理员安全指南。请参阅 文档在哪里?

问:如何将键盘重新映射为英国、法语等

答:对于最近的内核,请获取/pub/Linux/system/Keyboards/kbd-0.90.tar.gz来自 ftp://metalab.unc.edu/。确保您获得适当的版本;您必须为您的内核版本使用正确的键盘映射包。

对于较旧的内核,您必须编辑顶层内核Makefile,在/usr/src/linux/.

中。您可以在 Andries Brouwer 的 Linux Keyboard and Console HOWTO 中找到更多有用的信息,网址为 ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/

问:如何使数字锁定键默认开启

答:使用 setleds 程序,例如(在/etc/rc.local或其中一个/etc/rc.d/*文件中)

 for t in 1 2 3 4 5 6 7 8
 do
   setleds +num < /dev/tty$t > /dev/null
 done

setleds 是 kbd 包的一部分(“如何将我的键盘重新映射为英国、法语等?”)。

或者,修补您的内核。您需要安排在编译KBD_DEFLEDS定义为 (1 << VC_NUMLOCK) 时drivers/char/keyboard.c.

问:如何设置(或重置)初始终端颜色

答:以下 shell 脚本应该适用于 VGA 控制台

 for n in 1 2 4 5 6 7 8;
 do
   setterm -fore yellow -bold on -back blue -store > /dev/tty$n
 done

替换您喜欢的颜色,并使用/dev/ttyS$n用于串行终端。

为了确保在人们注销时重置它们(如果它们已被更改)

替换对getty(或mingettyuugetty或任何其他)在/etc/inittab中对/sbin/mygetty.

 #!/bin/sh setterm -fore yellow -bold on -back blue -store > $1
 exec /sbin/mingetty $@

的引用

[Jim Dennis]

问:如何拥有超过 128Mb 的交换空间

答:使用多个交换分区或交换文件。2.2 版本之前的 Linux 内核最多支持 16 个交换区,每个交换区最大为 128Mb。最近的版本没有此限制。

非常旧的内核仅支持最大 16Mb 的交换分区大小。在具有 8KB 分页的机器(如 Alpha 和 Sparc64)上的 Linux 支持高达 512MB 的交换分区。128MB 限制来自PAGE_SIZE*BITSPERBYTE

在具有 4KB 分页的机器上,但在具有 8KB 分页的机器上为 512KB。该限制是由于使用了单个页面分配图。文件mm/swapfile.c

包含所有血淋淋的细节。