科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用Perl管理Linux操作系统的配置文件 (4)

用Perl管理Linux操作系统的配置文件 (4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一般的开发者用于定位、学习和调试配置文件的所花费的时间,比您预期的要更长。不过,使用一个您可能每天都在用的工具:CVS 树,您就可以节约那些时间——并减轻精力和挫折的负担。

作者:Teodor Zlatanov 来源:IBM DW中国 2007年10月20日

关键字: 文件 操作系统 Linux PERL

  • 评论
  • 分享微博
  • 分享邮件
 

组织您的新配置

本节的内容将涵盖我个人关于迄今为止您建立的配置系统的经验。请随意利用这些思想,不过不要忘记我的个人设置并不是对每个人都适用。

我基于机器和操作系统以及它们所需要的具体程度来保存目录。例如,我在“linux”下保存 Linux 独有的配置,由于我的家用机器“heechee”有一个特殊的键盘,因此我有一个用于 heechee 独有配置的 heechee 目录。

不过,覆盖规则应该是,如果您可以在一个文件中而不是在用于多个平台的多个版本中描述一个配置,那么就那样去做。否则,您的大部分时间将消耗于维护同一个文件的两个或更多版本,那可不有趣。

让我们以我的 cshrc 文件中的一个例子开始,这个文件的一个版本可以用于所有机器。我利用了 C shell 语言内置的判断逻辑来做出抉择:

清单 10. 为不同平台定义 precmd

switch ($OSTYPE)
 case "solaris":
 case "SunOS":
  alias precmd '/bin/echo "\033]0;${HOST}:$cwd\007\c"'
 breaksw
 case "linux":
  alias precmd 'echo -n "\033]0;${HOST}:$cwd\007"'
 breaksw
endsw

上面的命令指明了同一内容的不同版本。Linux echo 需要一个 -n 开关来避免打印到一个新行,而 Solaris 版本需要在字符串末尾有一个 \c 。这样做的效果是,每当打印提示时,让 xterm 窗口的标题设置为 HOST:/DIRECTORY 。

显然,只要您可以在配置文件本身中做出决定,就不需要在不同的目录中生成同一个文件的多个版本。例如,用于我经常使用的所有大约六种机器的 Emacs 配置只有一个版本——其中一些运行的是 Emacs 20,那可是很多年前的老古董!

有时您不得不做一些分解。例如,xmodmaprc 文件设置的是键盘编码(keycodes)和键名之间的映射(还可以做很其他事情)。我在 ~/config/heechee/xmodmaprc 中保存了一个版本用于我的家用机器,在 ~/config/sun/xmodmaprc 中保存了另一个版本用于所有我使用的 Sun 机器。xmodmaprc 中没有逻辑,所以分解是唯一的解决方法。不过,我确实为所有的 Sun 机器只创建了一个 xmodmaprc 文件,因为他们的键盘类型相同。

crontab 文件(我保存在 ~/.crontab 中,定时地重装装载到 crontab)是需要为每台机器指定的配置文件的极端的例子。我的家用机器的 crontab 将不会适用于任何其他机器,而且在标准的 crontab 格式中没有逻辑可以用来在 cron 任务中基于任何除了时间以外的条件进行选择。

关键是您应该确定一个配置文件是否需要有多个版本,然后决定组织那些多个版本的最佳方式。您的目标应该是拥有一个稳定的环境,不需要花费很多时间用于编写和维护配置文件。我希望可以证实本文中阐述的技术对您探求配置的理想境界有所帮助。

结束语

我希望您觉得本文有趣而且实用。尽您所能去利用它——我已经用了多年的时间来完善我的设置,它应该会为您带来好处。

多次分步骤转换到这个模式,不要被吓倒。您可以轻松地用几天时间来重新编写您的配置——所以逐步来完成,您将从这个过程中得到乐趣。

您将看到的最大的好处是自动更新功能。在您的任何机器上,您可以提交一个文件,然后下次 maintain.pl 运行时它就会出现于所有其他机器上。即使您不赞同那个目录结构,也应该考虑自动更新的能力以及它们会如何给您带来帮助。

您获得的第二个好处是配置存档。您的配置的每个版本都将在版本控制系统中!如果您犯了错误,可以恢复到一个较早的版本。如果您失去了整个机器,比如,出现了硬盘错误——您可以在几分钟之内恢复花了很多时间为其编写的所有配置文件。

不要尝试将所有内容转换到这一模式。只转换您希望保存或重用的内容。二进制文件不适于使用 CVS——至少,不具备 CVS 为文本文件所提供的 diff 能力。此外,重命名目录时 CVS 会有问题,尽管当然有可能您也重命名了仓库中的目录。

最后,为您的 CVSROOT 仓库做好备份,不管是在哪里。希望您永远不要用到它们。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章