一般的开发者用于定位、学习和调试配置文件的所花费的时间,比您预期的要更长。不过,使用一个您可能每天都在用的工具:CVS 树,您就可以节约那些时间——并减轻精力和挫折的负担。使用这些技巧来备份、发布最令您头痛的 Linux ™(和 Unix ®)配置文件,并使其变得可移植。

使用 Linux 和计算机时,配置文件的用法通常是令人迷惑的。尽管已经提出了一些,但现在还不存在标准。例如,Samba 和 rsync 使用 INI 风格的配置;passwd 用的是几十年前的用冒号隔开的格式,不允许冒号出现在任何域中;sudo 附带了一些 visudo 程序,让人们不会在 sudoers 文件中输入错误的信息;EMacs 使用 Lisp 作为配置文件。还有...

现在,我不再抱怨配置文件的多样性。我理解了这个配置通天塔(Configuration Tower of Babel)的历史原因和实践原因。例如,如果改变了 Samba 配置的格式,就会使上千的管理员面临麻烦。另一个例子,Emacs 的内部语言是 Lisp,这是一门强大的高层次语言,所以,使用任何其他东西作为 Eamcs 的配置文件都是荒谬的。

不,我要指出的是这一多样性对 Linux 用户造成的影响:Linux 用户的计算机时间有一大部分用在学习、编写和调试配置文件。这样,有必要拥有一个系统,在这个系统中这些配置文件(1)是自动备份的,(2)是自动发布的,(3)可以用于多种风格的 UNIX 和多种 Linux 的发行版本。本文阐明了如何达成前两个目标,并引导您走上达成第三个目标的途径。

计划

我们将使用 CVS 来控制配置文件。可以随意使用任何其他版本系统。Subversion 正在迅速流行。FSF 有 GNU tla( GNU arch),是另一个优秀的版本系统。所有那些以及很多其他系统,包括并不免费的 Rational ®ClearCase ® 等,都会提供您所需要的功能。

在我的配置模式中,每个配置文件在一个单独的目录或者其子目录中。配置文件被唯一命名,目录表示的是 机器或者平台,而不是 位置。这样,文件名唯一地映射到文件系统中的一个位置。例如, passwd 将总是用于 /etc/passwd,而 cshrc 将由用户 tzz用于 /home/tzz/.cshrc。

对于我日常使用的一些程序,我将展示如何在我的配置系统的帮助下来管理多个平台,使它们自己修改配置文件。

我展示的所有例子都使用 C shell 来设置环境变量。修改它们以使用 GNU bash 或者其它 shell 应该不是特别困难。

安装设置 CVS

您可能已经在您的机器上安装了 CVS。如果没有,那么获取(查看 参考资料 部分)并安装它。如果您正在使用另一个版本系统,那么尝试设置类似我下面展示的一些内容。

首先,您需要创建一个 CVS 仓库。我将假定您可以通过 OpenSSh 或 Pserver CVS access(Pserver 是 CVS 所使用的一个通信协议;查看 参考资料 以获得更多资料)访问一台可以用作 CVS 服务器的机器。然后,您需要创建一个名为 config 的模块,我将用它来管理示例配置文件。最后,您需要安排一个远程非交互地使用您的 CVS 仓库的途径,可以通过 OpenSSH、Pserver 或者任何可行途径。最后一点极度依赖于您具体的系统管理技巧、偏执程度以及环境,所以我只是在 参考资料 中为您指出了一些资料。在本文的其余部分,我将假定您已经配置了通过 OpenSSH 进行的非交互(ssh-agent)登录。

清单 1. 在一台机器上建立 CVS 仓库

# assume that /cvsroot is your repository's home> setenv CVSROOT /cvsroot# this will use \$CVSROOT if no -d option is specifIEd> cvs init# check that it worked> ls /cvsroot# you should see one Directory called CVSROOTCVSROOT

既然仓库已经建立起来,您接下来就可以远程使用它(您也可以在 CVS 服务器上执行下面的步骤——只是让 CVSROOT 仍是如清单 1 中所示)。

清单 2. 远程地向 CVS 添加 config 模块

# user tzz, machine home.com, directory /cvsroot is the CVSROOT> setenv CVSROOT tzz@home.com:/cvsroot# use SSH as the transport> setenv CVS_RSH ssh# use a temporary directory for the module creation> cd /tmp> mkdir config> cd config# tzz is the "vendor name" and initial is the "release tag", they can# be anything; the -m flag tells CVS not to ask us for a message# if this fails due to SSH problems, see the Resources> cvs import -m '' config tzz initialNo conflicts created by this import# now let's do a test checkout> cd ~> rm -rf /tmp/config> cvs co configcvs checkout: Updating config# check everything is correct> ls configCVS

perl 登录linux服务器,用Perl管理Linux操作系统的配置文件相关推荐

  1. 《构建高可用Linux服务器 第3版》—— 1.4 Linux服务器的日志管理

    本节书摘来自华章出版社<构建高可用Linux服务器 第3版>一 书中的第1章,第1.4节,作者:余洪春 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.4 ...

  2. linux服务器管理公司用户,在Linux服务器Jenkins中管理用户和角色的方法

    下面将教你如何在Linux服务器Jenkins中管理用户和角色,它需要创建角色并分配给用户,你需要运行Jenkins服务器才能操作接下来的工作. 安装Jenkins参考文章 在Jenkins中管理用户 ...

  3. linux服务器集群管理面板,AppNode-Linux 服务器集群管理面板安装教程

    有关 Linux 面板我们已经说过几个了,如果你手里有很多 Linux 服务器怎么去管理呢,目前这几款中文面板都不具备集中管理功能.今天介绍一款定位于服务器运维管理的AppNode,一款Linux 服 ...

  4. Linux服务器集群管理工具——APPNode的搭建与使用

    Linux服务器集群管理工具--APPNode的搭建与使用 一.AppNode介绍 1.AppNode介绍 2.AppNode特点 3.官方网址 二.使用官方安装脚本一键安装 三.登录web 四.进入 ...

  5. 如何访问Linux服务器中RabbitMQ管理页面

    大家好,本篇文章主要讲的是解决访问不到Linux服务器中RabbitMQ管理页面问题,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 由于自己项目的某项功能需要服务器中发送消息到 ...

  6. Linux服务器,服务管理--systemctl命令详解,设置开机自启动

    Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了. 摘要: syst ...

  7. Linux 服务器(二)-linux安装方法之Centos安装介绍——Windows中制作USB启动盘 MacOS中制作USB启动盘

    Linux 服务器(二)-linux安装方法之Centos安装介绍--Windows中制作USB启动盘 & MacOS中制作USB启动盘 安装方法 Centos安装方法: 下载镜像 按需选择下 ...

  8. linux服务器立即关机命令,Linux服务器重启/关机命令(shutdown/halt/reboot/init/poweroff)...

    Linux服务器重启命令有shutdown.halt.reboot.init和poweroff,Linux百科网分享各个重启命令参数及使用方法: 以下关于Linux服务器重启命令写的比较详细,如果你着 ...

  9. linux服务器管理公司用户,Linux服务器用户账号如何管理

    为管理众多系统用户,Linux提供了完备的组群和用户两级管理.高防服务器用户名是指系统分配给个人登录到系统的账号.组群是指功能及权限相似的一类用户的集合.Linux采用两级系统用户管理,给组群及用户分 ...

  10. linux服务器学习笔记:linux如何远程登录?

    Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...

最新文章

  1. Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数
  2. YOLOv3最全复现代码合集(含PyTorch/TensorFlow和Keras等)
  3. CF思维联系–CodeForces - 222 C Reducing Fractions(数学+有技巧的枚举)
  4. “做好大数据测试,我是认真的!”
  5. java加互斥锁关键字_Java中用于给对象加“互斥锁”标记的关键字是。( )
  6. 20165211 我期望的师生关系
  7. JavaScript学习(七十六)—this的指向问题
  8. 再续上一篇:如果哪天沃尔玛也“.CN”了
  9. AI艺术的发展:让艺术通过人工智能变得更具创造力和人性化
  10. 广告关闭php,电脑右下角的广告怎么去掉
  11. linux可变剪切分析,SpliceR:一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包...
  12. 邮箱批量登陆工具测试版
  13. mysql的join查询和多次查询比较
  14. 使用python requests 爬取妹子图网站图片
  15. MID-TERM EXAMINATION 1
  16. Orkut 也遭到 XSS 攻击,18 万用户受影响
  17. RTL8720DN SDK 环境搭建
  18. tfcenter webdav速度测试数据(手机下载速度可达46MB/s)
  19. 汽车轻量化 | 某SUV车型白车身的轻量化分析案例
  20. 图_SimpleGraph

热门文章

  1. 线性判别分析(LDA)和她的家人们
  2. c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!
  3. A Crowdsourcing Method for Correcting Sequencing Errors for the Third-generation Sequencing Data 一种用
  4. jwt只能用ajax么,使用JWT进行登录认证的一些问题
  5. java控制台next_java读取控制台输入以及next() ,nextLine(), nextInt() 和nextDouble()的比较...
  6. Keras K.switch()用法
  7. linux进程间通讯-无名管道
  8. JAVA基础10-继承(1)
  9. 小米mix2s html,【小米MIX2s评测】性能·骁龙845确实很强 但小米没压住_小米 MIX 2s(6GB RAM/全网通)_手机评测-中关村在线...
  10. html如何让列表呈直线排列,html – 列表分成多列