理解Linux配置文件

若要修改配置文件,首先要知道这个配置文件的位置,然后要清楚这个配置文件中每个变量的含义,才可作修改。

介绍

每个Linux程序都是一个可执行文件,它含有操作码列表(操作码其实就是指令序列号,用来告诉CPU需要执行哪一条指令。指令系统的每一条指令都有一个操作码,它表示该指令应进行什么性质的操作。)CPU将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。 几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。

Linux中有没有一个标准的配置文件格式?

一句话,没有。不熟悉Linux的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在Linux中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多,从 /etc/shells 文件(它包含被一个换行符分开的shell 的列表),到Apache的复杂的 /etc/httpd.conf文件。

什么是系统配置文件?

内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd文件。(用户直接打开 /etc/passwd 是无法看到密码的)相反,程序应该调用系统库的getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。

除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类:

守护进程

守护进程是一种运行在非交互模式下的程序。一般来说,守护进程任务是和联网区域有关的:它们等待连接,以便通过连接提供服务。Linux可以使用从Web服务器到ftp服务器的很多守护进程。

/etc/syslogd.confsyslogd守护进程的配置文件。syslogd是一种守护进程,它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用,这些守护进程不会有另外的方法发出可能有问题存在的信号或向用户发送消息。
/etc/httpd.confWeb服务器Apache的配置文件。这个文件一般不存在/etc/中。它可能在/usr/local/httpd/conf或/etc/httpd/conf/中,但是要确定它的位置,你还需要检查特定的Apache安装信息。
/etc/conf.modules or /etc/modules.confkerneld的配置文件。有意思的是,kerneld并不是“作为守护进程的”内核。它其实是一种在需要时负责“快速”加载附加内核模块的守护进程。

更改配置文件

在更改配置文件时,如果程序不是由系统管理员或内核控制的,就要确保重新启动过使用该配置的程序。普通用户通常没有启动或停止系统程序和/或守护进程的权限。

内核

更改内核中的配置文件会立即影响到系统。例如,更改passwd文件以增加用户将立即使该用户变为可用。而且任何Linux系统的 /proc/sys 目录中都有一些内核可调参数。只有超级用户可以得到对所有这些文件的写访问权力;其它用户只有只读访问权力。此目录中文件的分类方式和Linux内核源代码的分类方式一样。此目录中的每个文件都代表一个内核数据结构,这些数据结构可以被动态地修改,从而改变系统性能。

注意:在更改其中任何文件的任何值之前,你应该确保自己全面了解该文件,以避免对系统造成不可修复的损害。

/proc/sys/kernel/ 目录中的文件

文件名描述
threads-max内核可运行的最大任务数
ctrl-alt-del如果值为1,那么顺序按下这几个键将“彻底地”重新引导系统。
sysrq如果值为1,Alt-SysRq则为激活状态。
osrealease显示操作系统的发行版版本号
ostype显示操作系统的类型
hostname系统的主机名
domainname网络域,系统是该网络域的一部分
modprobe指定modprobe是否应该在启动时自动运行并加载必需的模块。

守护进程和系统程序

守护进程是永远运行在后台的程序,它默默地执行自己的任务。常见的守护进程有 in.ftpd(ftp服务器守护进程)、in.telnetd(telnet服务器守护进程)和syslogd(系统日志记录守护进程)。有些守护进程在运行时会严格监视配置文件,在配置文件改变时就会自动重新加载它。但是大多数守护进程并不会自动重新加载配置文件。我们需要以某种方式”告诉“这些守护进程配置文件已经被修改并应该重新加载。可以通过使用服务命令重新启动服务来达到这个目的(在Red Hat Linux 系统上)。

例如,如果我们更改了网络配置,就需要发出:

service network restart

注意:这些服务最常见的是 /etc/rc.d/init.d/* 目录中存在的脚本,在系统被引导时由 init 启动。所以,你也可以执行如下操作来重新启动服务:

/etc/rc.d/init.d/<script-for-the-service> start | stop | status

start、stop和status是这些脚本接受的输入值,用来执行操作。

用户程序

用户或系统程序在每次启动时都会读取其配置文件。尽管如此,请记住,有些系统程序在计算机打开时情况不一样,它们的行为依赖于在 /etc/ 中配置文件中读到的内容。所以,用户程序第一次启动时将从 /etc/ 目录中存在的文件读取默认配置。然后,用户可以通过使用 rc 和 . (点)文件来定制程序,正如下面一节所示。

用户配置文件: .(点)文件和rc 文件

我们已经看到怎样容易地配置程序。但是如果有的人不喜欢在 /etc/ 中配置程序的方式该怎么办呢?”普通“用户不能简单地进入 /etc/ 然后更改配置文件;从文件系统的角度来看,配置文件的所有者是 root 用户!这就是大多数用户程序都定义两个配置文件的原因:第一个是”系统“级别的,位于 /etc/ ;另一个属于用户”专用“,可以在他或她的主目录找到。

例如,我在我的系统中安装了非常有用的wget 实用程序。 /etc/ 中有一个 /etc/wgetrc 文件。在我的主目录中,有一个名为 .wgetrc的文件,它描述了我定制的配置(只有在我,也就是用户运行wget 命令时,才会加载这个配置文件)。其它用户在他们自己的主目录(/home/other)中也可以有 .wgetrc 文件;当然,只有这些用户运行 wget 命令时,才会读取这个文件。换句话说,/etc/wgetrc 文件为 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列举了某个用户的“定制项”。重要的是这只是“一般规则”,并非所有情况都如此。例如,一个象 pine 一样的程序,在 /etc/ 中并没有任何文件,它只在用户主目录中有一个定制配置文件,名为 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允许用户“定制”这些配置文件(/etc 目录中只有少数 config. 文件是这种情况)。

通常使用的 rc 和 .(点)文件

(Red Hat Linux下)

文件名描述
~/.bash_login参考 “man bash”。如果~/.bash_profile不存在,bash则将~/.bash_login作为~/.bash_profile处理。
~/.bash_logout参考“man bash”。在退出时由bash 登录shell 引用。
~/.bash_profile由bash 登录 shell 引用 /etc/profile 之后引用。
~/.bash_history先前执行的命令的列表。
~/.bashrc请参考“man bash”。由 bash 非登录交互式 shell 引用(没有其它文件)。除非设置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。
~/.emacs启动时由 emac 读取。
~/.forward如果这里包含一个电子邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到这个电子邮件地址。
~/.fvwmrc ~/.fvwm2rcfvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。
~/.hushlogin请参考“man login”。引起“无提示”登录(没有邮件通知、上次登录信息或者 MOD 信息)。
~/.mail.rc邮件程序的用户初始化文件。
~/.ncftp/ncftp 程序的目录;包含书签、日志、宏、首选项和跟踪信息。请参阅 man ncftp。ncftp 的目的是为因特网标准文件传输协议(Internet standard File Transfer Protocol)提供一个强大而灵活的接口。它旨在替换系统所使用的标准的 ftp 程序。
~/.profile请参考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 则将 ~/.profile 作为 ~/.bash_profile 处理,并被其它继承 Bourn 的 shell 使用。
~/.pinercPine 配置
~/.muttrcMutt 配置
~/.exrc这个文件可以控制 vi 的配置。 
示例:set ai sm ruler 
在此文件中写入上面一行会让 vi 设置自动缩进、匹配括号、显示行号和行-列这几个选项。
~/.vimrc缺省的“Vim”配置文件。和 .exrc 一样。
~/.gtkrcGNOME 工具包(GNOME Toolkit)。
~/.kdercKDE 配置。
~/.netrcftp 缺省登录名和密码。
~/.rhosts由 r- 工具(如 rsh、rlogin 等等)使用。因为冒充主机很容易,所以安全性非常低。 
  1. 必须由用户(~/ 的所有者)或超级用户拥有。
  2. 列出一些主机,用户可以从这些主机访问该帐号。
  3. 如果是符号链接则被忽略。
~/.rpmrc请参阅“man rpm”。如果 /etc/rpmrc 不存在则由 rpm 读取。
~/.signature消息文本,将自动附加在从此帐号发出的邮件末尾。
~/.twmrctwm( The Window Manager)的配置文件。
~/.xinitrc启动时由 X 读取(而不是由 xinit 脚本读取)。通常会启动一些程序。 
示例:exec /usr/sbin/startkde 
如果该文件中存在上面这行内容,那么在从这个帐号发出 startx 命令时,这一行就会启动“KDE 视窗管理器”(KDE Window Manager)。
~/.xmodmaprc此文件被传送到 xmodmap 程序,而且可以被命名为任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。
~/.xserverrc如果 xinit 可以找到要执行的 X,xinit 就会将该文件作为 X 服务器运行。
~/News/Sent-Message-IDsgnus 的缺省邮件历史文件。
~/.Xauthority由 xdm 程序读和写,以处理权限。请参阅 X、xdm 和 xauth 联机帮助页。
~/.Xdefaults, ~/.Xdefaults-hostname在主机 hostname 的启动过程中由 X 应用程序读取。如果找不到 -hostname 文件,则查找 .Xdefaults 文件。
~/.Xmodmap指向 .xmodmaprc;Red Hat 有使用这个名称的 .xinitrc 文件。
~/.Xresources通常是传送到 xrdb 以加载 X 资源数据库的文件的名称,旨在避免应用程序需要读取一个很长的 .Xdefaults 文件这样的情况。(有些情况曾经使用了 ~/.Xres。)
~/mbox用户的旧邮件。

参考来源:

理解 Linux 配置文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值