7.1. 常规良好内务管理

7.1.1. 简介

正如我们之前提到的,很容易把系统搞得一团糟。我们再怎么强调保持系统整洁的重要性也不为过。如果你从一开始就养成这个习惯,它将成为一个良好的习惯,在 Linux 或 UNIX 系统上编程或面对系统管理任务时,这将为你节省时间。这里有一些让你的生活更轻松的方法

7.1.2. 腾出空间

在某些系统中,quota 系统可能会强制你时不时地清理,或者硬盘的物理限制可能会迫使你在不运行任何监控程序的情况下腾出更多空间。本节讨论了除了使用 rm 命令之外,回收磁盘空间的一些方法。

运行 quota -v 命令查看还剩多少空间。

7.1.2.1. 清空文件

有时你对文件的内容不感兴趣,但你需要文件名作为标记(例如,你只需要文件的时间戳,提醒文件在那里或者将来应该在那里)。在 BourneBash shell 中,通过重定向空命令的输出来实现这一点

andy:~> cat wishlist > placeholder

andy:~> ls -la placeholder
-rw-rw-r--    1 andy   andy       200 Jun 12 13:34 placeholder

andy:~>  > placeholder

andy:~> ls -la placeholder

-rw-rw-r--    1 andy   andy         0 Jun 12 13:35 placeholder

将现有文件缩减为同名但大小为 0 字节的文件的过程称为 截断

对于创建新的空文件,使用 touch 命令可以获得相同的效果。在现有文件上,touch 只会更新时间戳。有关更多详细信息,请参阅 touchInfo 页面。

要“几乎”清空一个文件,请使用 tail 命令。假设用户 andy 的愿望清单变得很长,因为他总是添加东西在末尾,但从不删除他实际得到的东西。现在他只想保留最后五个项目

andy:~> tail -5 wishlist > newlist

andy:~> cat newlist > wishlist

andy:~> rm newlist

7.1.2.2. 更多关于日志文件

一些 Linux 程序坚持将各种输出写入日志文件。通常有一些选项可以仅记录错误,或记录最少的信息,例如设置程序的调试级别。但即便如此,你可能仍然不在意日志文件。这里有一些方法可以摆脱它们,或者至少限制它们的大小

  • 如果你确定不再需要日志文件,请尝试在程序未运行时删除它。某些程序甚至可能在重新启动时发现没有日志文件,因此不会记录日志。

  • 如果你删除了日志文件,但程序又重新创建了它,请阅读该特定程序的文档,查找避免创建日志文件的命令行选项。

  • 尝试通过仅记录与你相关的信息或仅记录重要信息来创建更小的日志文件。

  • 尝试将日志文件替换为指向以下位置的符号链接/dev/null;如果幸运的话,程序不会报错。不要对在系统启动时运行的程序或从 cron 运行的程序的日志文件执行此操作(参见第 4 章)。这些程序可能会将符号链接替换为一个重新开始增长的小文件。

7.1.2.3. 邮件

定期清理你的邮箱,使用 procmail(参见 Info 页面)或你喜欢的邮件阅读应用程序的过滤器创建子文件夹和自动重定向。如果你有垃圾箱文件夹,请定期清理它。

要重定向邮件,请使用.forward你主目录中的文件。Linux 邮件服务在需要传递本地邮件时会查找此文件。文件的内容定义了邮件系统应如何处理你的邮件。它可以包含一行,其中包含一个完全限定的电子邮件地址。在这种情况下,系统会将你的所有邮件发送到此地址。例如,当为网站租用空间时,你可能希望将发送给网站管理员的邮件转发到你自己的帐户,以避免浪费磁盘空间。网站管理员的.forward可能看起来像这样

webmaster@www ~/> cat .forward
mike@pandora.be

使用邮件转发也很有用,可以避免你不得不检查多个不同的邮箱。你可以使每个地址都指向一个中心且易于访问的帐户。

你可以要求你的系统管理员在本地邮件别名文件中为你定义一个转发,例如当帐户被关闭但电子邮件仍然保持活动一段时间时。

7.1.2.4. 使用链接节省空间

当多个用户需要访问同一个文件或程序时,当原始文件名太长或太难记住时,请使用符号链接而不是为每个用户或目的单独复制一份。

多个符号链接可能有不同的名称,例如,一个链接可能被称为monfichier在一个用户的目录中,以及mylink在另一个用户的目录中。同一文件中多个链接(不同名称)也可能出现在同一目录中。这通常在/lib目录中完成:当发出命令

ls-l /lib

你会看到此目录中有大量指向相同文件的链接。创建这些链接是为了使搜索一个名称的程序不会卡住,因此它们被指向程序所需的库的正确/当前名称。

7.1.2.5. 限制文件大小

shell 包含一个用于限制文件大小的内置命令 ulimit,它也可以用于显示系统资源限制

cindy:~> ulimit -a
core file size (blocks)     0
data seg size (kbytes)      unlimited
file size (blocks)          unlimited
max locked memory (kbytes)  unlimited
max memory size (kbytes)    unlimited
open files                  1024
pipe size (512 bytes)       8
stack size (kbytes)         8192
cpu time (seconds)          unlimited
max user processes          512
virtual memory (kbytes)     unlimited

Cindy 不是开发人员,她不关心 core dump,core dump 包含程序的调试信息。如果你想要 core dump,可以使用 ulimit 命令设置它们的大小。有关详细说明,请阅读 bashInfo 页面。

NoteCore 文件?
 

当程序在执行过程中出现问题时,有时会生成 core 文件或 core dump。core 文件包含错误发生时系统内存的副本。

7.1.2.6. 压缩文件

压缩文件很有用,因为它们占用硬盘空间更少。另一个优点是,通过网络发送压缩文件所需的带宽更少。你的系统上许多文件(例如 man 页面)都以压缩格式存储。然而,解压缩这些文件以获取少量信息,然后再将它们压缩回去,这是相当耗时的。例如,你不想解压缩 man 页面,阅读有关命令选项的信息,然后再压缩 man 页面。大多数人可能在找到他们需要的信息后忘记清理。

因此,我们有一些工具可以处理压缩文件,它们仅在内存中解压缩文件。实际的压缩文件保持在磁盘上不变。大多数系统都支持 zgrepzcatbzless 和 z 系列的其他成员,以防止不必要的解压缩/压缩操作。请参阅你系统的二进制目录和 Info 页面。

有关文件实际压缩和制作归档文件的示例,请参见第 9 章